为什么{a:1}在控制台中评估为1

and*_*lrc 4 javascript console syntax-error

我为什么Chrome和Firefox中的控制台评估当前的1:

> {a:1}
1
Run Code Online (Sandbox Code Playgroud)

我猜它会被评估为一个对象,就像你将它分配给一个变量:

> var a = {a:1}
undefined
> a
Object {a: 1}
Run Code Online (Sandbox Code Playgroud)

并使用引号会引发语法错误:

> {"a":1}
SyntaxError: Unexpected token :
Run Code Online (Sandbox Code Playgroud)

jos*_*736 7

试试({a:1}).

只是执行{a:1}不是你想象的那样.它不是对象文字,必须是表达式(例如,在赋值的右侧).

相反,你拥有的是一个,一个标签,然后是1.

{
    a:
    1
}
Run Code Online (Sandbox Code Playgroud)

块返回其评估结果,标签返回评估标签后面的语句的结果,因此1返回.

  • @NULL,根据规范,标签只能与`break`和`continue`语句一起使用.但是,即使你没有办法在这个特定的上下文中使用标签,也没有什么*语法*无法定义一个.这是一种特殊性. (3认同)