以下将显示在壁炉中或 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 因为 { 象征性的开始时会引起歧义,解析器将其对待好像是一个 块语句, ,不是对象字面的开始。

例如,有效的块语句:

{ foo: 'bar' }

以上 看起来 就像对象的字面形式,但不是,因为代码已在 语句上下文.

它将被解析为一个块,其中包含一个 标签语句 (foo),然后是表达式语句('bar').

为了确保您使用对象字面的语法,您可以用括号包裹它(也称为 分组操作员):

({ foo: 'bar' })

分组操作员只能采用表情,因此没有歧义。

也可以看看:

其他提示

我不是100%积极的,但是我认为正在发生的事情是,在第二行中,您要定义一个块,而不是对象。因此,当解析器达到逗号时,解析错误会出现,因为它期望半色。 DEF的标签是标签,例如在GoTO或Switch语句中。我希望这种解释有任何意义。

控制台执行AS ASE('您输入')

eval({....}) --- this will get an error
eval('({....})')---eval string as a function
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top