这个问题在这里已有答案:
- 为什么{} == false会抛出异常? 1个答案
2481
2017-11-11 09:46
起源
答案:
在前一种情况下,解析器并不清楚 {}
代表一个价值。
以下作品:
var a = {};
a == false // false
或者您也可以使用:
({}) == false // false
所以这不是价值比较的具体内容 - 相反,它是解析代码的方式。
好问题!
11
2017-11-11 09:48
如果你只跑 {}
,你看到它根本没有被解析为一个对象 - 它给出了 undefined
!显然,它被解析为代码块。因此, {} == false
是语法错误,因为左侧没有任何内容 ==
。
{}variableName
出于同样的原因,它也不是语法错误 - 它是一个空代码块。
如果将其包装在括号中,则会将其正确解析为对象文字,并且可以正常工作。
({}) == false
3
2017-11-11 09:51
即便这样,
/{}/ == false; // false
0
2017-11-11 09:53
你是怎么回答它被关闭后重复的? - Scimonster
我没看到,仅在发布后,我看到它是重复的。抱歉 - Dimag Kharab
我的意思是,从技术上讲,它是如何让你的? - Scimonster
@Scimonster闻起来BUGGY! - Dimag Kharab
@Scimonster:仅在客户端上强制执行阻止发布的限制。如果您在页面关闭之前加载页面,并且由于某种原因JavaScript未加载或无法正常工作,则用户可以在关闭后发布。 meta.stackexchange.com/questions/91922/... - Qantas 94 Heavy
答案:
在前一种情况下,解析器并不清楚 {}
代表一个价值。
以下作品:
var a = {};
a == false // false
或者您也可以使用:
({}) == false // false
所以这不是价值比较的具体内容 - 相反,它是解析代码的方式。
好问题!
11
2017-11-11 09:48
如果你只跑 {}
,你看到它根本没有被解析为一个对象 - 它给出了 undefined
!显然,它被解析为代码块。因此, {} == false
是语法错误,因为左侧没有任何内容 ==
。
{}variableName
出于同样的原因,它也不是语法错误 - 它是一个空代码块。
如果将其包装在括号中,则会将其正确解析为对象文字,并且可以正常工作。
({}) == false
3
2017-11-11 09:51
即便这样,
/{}/ == false; // false
0
2017-11-11 09:53
你是怎么回答它被关闭后重复的? - Scimonster
我没看到,仅在发布后,我看到它是重复的。抱歉 - Dimag Kharab
我的意思是,从技术上讲,它是如何让你的? - Scimonster
@Scimonster闻起来BUGGY! - Dimag Kharab
@Scimonster:仅在客户端上强制执行阻止发布的限制。如果您在页面关闭之前加载页面,并且由于某种原因JavaScript未加载或无法正常工作,则用户可以在关闭后发布。 meta.stackexchange.com/questions/91922/... - Qantas 94 Heavy