花括号语法错误后的javascript点?:{num:1} .num

时间:2014-02-07 04:58:22

标签: javascript syntax syntax-error

在Chrome的devtools中键入以下内容:{num:1}.num会出现语法错误:

SyntaxError: Unexpected token .

...但输入此内容会返回1:

(function() {
    return {num:1}.num;
})();

为什么我在第一个例子中得到语法错误而不是第二个例子?

1 个答案:

答案 0 :(得分:5)

因为在这种情况下大括号是模糊的,并且被解释为block statement,而不是对象文字。像

这样的东西
{
    num: 1
}
.num

num:被解释为label

您可以使用分组运算符强制将构造解释为表达式:

({num: 1}).num

在第二种情况下,大括号只能是一个对象文字,因为return语句只能包含一个表达式(而不是一个语句)