javascript - 输入 {a :1} giving 1, 和 {a :1, b :2} giving an error in a Javascript console? 的行为是什么

标签 javascript firebug javascript-objects

以下将显示在 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/

相关文章:

javascript - Laravel 5 在 JS 末尾添加无效字符

javascript - 调用 : foo(function(params){. ..}); 是什么意思?

javascript - 如何使用 Firebug 从特定站点获取 Javascript 函数的源代码?

javascript - 这个生成的代码应该(打算)做什么?

javascript - 如何在js全年日历中选择范围并添加事件

Javascript:获取具有随机属性值的对象

连续字符串中的 javascript [object Window]

javascript - 如何在 javascript 中将元数据设置为 azure 中的 createblockblobfrombrowserfile

javascript - 获取元素的事件监听器

firefox - 用 firebug 检查 firefox