我认为这是因为解释器将其解释{}
为代码块而不是对象。
所以你的代码{} == null
原来是一个块开始和结束,然后一个语句开始,==
这绝对是一个语法错误。
但如果你可以尝试({} == null)
,我认为它应该运行良好。
正如@dhaker 所指出的,没有{}=={}
返回false
错误。
我发现很少有场景返回结果,很少有错误。
以下出现错误:
{}==null //Uncaught SyntaxError: Unexpected token ==
{}==1 //Uncaught SyntaxError: Unexpected token ==
{}==0 //Uncaught SyntaxError: Unexpected token ==
{}==true //Uncaught SyntaxError: Unexpected token ==
{}==false //Uncaught SyntaxError: Unexpected token ==
{}==true //Uncaught SyntaxError: Unexpected token ==
{}=='' //Uncaught SyntaxError: Unexpected token ==
{}=='hi' //Uncaught SyntaxError: Unexpected token ==
{}==(new Object) //Uncaught SyntaxError: Unexpected token ==
以下是没有错误的返回结果:
{}=={} //false
{}==function(){} //false
所以我想这与浏览器如何编译或解释Javascript有关。
如需更详细的答案,请查看以下答案。
对象文字比较的奇怪行为