在Chrome的DevTools中键入此信息:{num:1}.num
给出语法错误:
SyntaxError: Unexpected token .
...但是输入此返回1:
(function() {
return {num:1}.num;
})();
为什么我在第一个示例中获得语法错误,而不是第二个?
,因为在这种情况下括号是模棱两可的,并且被解释为块语句,而不是对象字面。像
{
num: 1
}
.num
其中num:
被解释为标签。
您可以使用分组操作员迫使构造被解释为表达式:
({num: 1}).num
在第二种情况下,括号只能是一个字面的对象,因为返回语句只能包含一个表达式(而不是语句)