以下是浏览器控制台(firefox和chrome)的结果,
false == {}
有效,但{} == false
会出现语法错误。
>> false == []
true
>> false == {}
false
>> 0 == false
true
>> false == []
true
>> false == {}
false
>> [] == false
true
>> {} == false
Uncaught SyntaxError: Unexpected token ==
答案 0 :(得分:11)
在前一种情况下,解析器并不清楚{}
代表一个值。
以下作品:
var a = {};
a == false // false
或者您也可以使用:
({}) == false // false
所以这不是价值比较的特定内容 - 相反,它是解析代码的方式。
好问题!
答案 1 :(得分:3)
如果你只运行{}
,你会发现它根本没有被解析为对象 - 它给出了undefined
!显然,它被解析为代码块。因此,{} == false
是语法错误,因为==
的左侧没有任何内容。
{}variableName
也不是语法错误 - 它是一个空代码块。
如果将它包装在括号中,它会被正确地解析为对象文字,并且可以正常工作。
({}) == false
答案 2 :(得分:0)
即便如此,
/{}/ == false; // false