尝试访问对象a
{}
时
{}.a
我收到错误
SyntaxError: Unexpected token .
parens一切都很好:
({}).a
为什么我会在第一时间出错?有歧义吗?
答案 0 :(得分:15)
花括号被解释为block statement,而不是对象文字。您无法使用左大括号开始表达式语句。
规范声明:
注意 ExpressionStatement 无法以大括号开头 因为这可能会使 Block 模糊不清。还有,一个 ExpressionStatement 无法以
function
关键字开头,因为 这可能会使 FunctionDeclaration 变得模棱两可。
答案 1 :(得分:1)
{}用于构建对象。通常你首先将新对象分配给变量。
var o = {
a: "b"
};
console.log(o.a);
但这也是可能的:
console.log({
a: "b"
}.a);