当我在 chrome 开发工具中尝试时,它显示Uncaught SyntaxError: Unexpected token .
但是,如果当它分配给a:
var a={}.toString();
a //[object Object]
是什么造成了这种差异?
是什么造成了这种差异?
解析器所处的状态。默认情况下,解析器处于期望的状态陈述。所以在控制台的示例中,{
看起来像是一个块的开始,而不是对象初始值设定项的开始。 (此时你也可以给它一个表达式,因为 JavaScript 有表达式语句,这是一个完全由表达式组成的语句。)
但在你的var a={}.toString();
代码,将{}.toString()
出现在分配的右侧,解析器期望的是表达,不是一个声明。所以{
启动对象初始值设定项。
如果你做了一些事情让解析器需要一个表达式,它也会在控制台中工作:
({}).toString(); // "[object Object]"
or
+{}.toString(); // NaN, because the `+` tries to turn `[object Object]` into a number and fails
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)