以下是浏览器控制台(火狐和谷歌)中的结果,false == {}
是正确的,但是 {} == false
会给出语法错误。
>> false == []
true
>> false == {}
false
>> 0 == false
true
>> false == []
true
>> false == {}
false
>> [] == false
true
>> {} == false
Uncaught SyntaxError: Unexpected token ==
以下是浏览器控制台(火狐和谷歌)中的结果,false == {}
是正确的,但是 {} == false
会给出语法错误。
>> false == []
true
>> false == {}
false
>> 0 == false
true
>> false == []
true
>> false == {}
false
>> [] == false
true
>> {} == false
Uncaught SyntaxError: Unexpected token ==
{}
代表一个值。var a = {};
a == false // false
或者您可以使用以下方法:
({}) == false // false
所以这不是针对值的比较的特定内容,而是代码被解析的方式。
好问题!
{}
,你会发现它根本没有被解析为对象 - 它返回了undefined
!显然,它被解析为代码块。因此,{} == false
是一个语法错误,因为在==
的左侧没有任何内容。
{}variableName
也不是语法错误,原因相同 - 它是一个空的代码块。
如果你将其用括号包起来,它就会被正确地解析为对象字面量,并且能够正常工作。
({}) == false
即使这个可以工作,
/{}/ == false; // false