var a = {};
a.constructor //function Object() { [native code] }
{}.constructor //Uncaught SyntaxError: Unexpected token .(…)
在控制台输入以上代码,出现的情况.
为什么呢,a 和 {} 的constructor 不应该都有并且一样吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
直接写
{}不行,解释器会将这个当成语句块来解释,而不是当做对象字面量加个括号就好了:
({}).constructor。这样写是强制转成表达式,而只有对象字面量可以作为表达式,语句块不行,所以这样就没有歧义了,解释器也就不会犯糊涂了有什么不对吗?
Node 5.7.0
浏览器 Chrominum 核心 v46
你那个问题是
{}作为起始语句出现的问题,你改成({}).constructor就对了。label:{
while(true){break label;}
alert(false);
}
{}作为结构体解析不是不够智能,而是确实有其他用途的歧义。
啥意思,没啥特殊反应啊
输出一样表示
同求解释...