以下将显示在 Firebug 或 jsconsole.com 中或在其他 Javascript 交互式控制台中:
>>> foo = { a : 1, b : 2.2 }
Object { a=1, more...}
>>> foo.a
1
>>> foo.b
2.2
>>> { a : 1, b : 2.2 }
SyntaxError: invalid label { message="invalid label", more...}
>>> { a : 1 }
1
为什么 1
为 {a : 1}
返回,为什么 {a : 1, b : 2.2}
给出错误?在 Ruby 中,它们会按照您定义它的方式返回。
最佳答案
第二行给你一个 SyntaxError
因为它开头的 {
标记会导致歧义,解析器将其视为 Block statement。 ,而不是对象字面量的开头。
例如,一个有效的 Block 语句:
{ foo: 'bar' }
上面的看起来像一个对象字面量,但它不是,因为代码是在语句上下文中计算的。
它将被解析为一个包含 labelled statement 的 block (foo
),后跟表达式语句 ('bar'
)。
为确保您使用的是对象字面量的语法,您可以用括号将其括起来(也称为 the grouping operator ):
({ foo: 'bar' })
分组运算符只能取表达式,因此没有歧义。
另见:
关于javascript - 输入 {a :1} giving 1, 和 {a :1, b :2} giving an error in a Javascript console? 的行为是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731802/