我不明白为什么以下评估时,3而不是仅仅从JavaScript REPL或通过Chrome的开发人员工具运行时声明语法错误:
{1, 2, 3};
3
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该是语法错误,如下所示:
var foo = {1, 2, 3};
Uncaught SyntaxError: Unexpected token ,
Run Code Online (Sandbox Code Playgroud)
我觉得有一些我不知道的古怪行为?
Nie*_*sol 12
这是符号的细分:
{ 启动代码块1 数字文字, 逗号运算符(评估双方,返回右侧)2 数字文字, 逗号运算符3 数字文字} 结束代码块码块不限于定义if,while等等块,它们可以在任何地方使用.因此,您的代码只是一个包含链式逗号运算符序列的块,它返回链中的最后一项,因此3.
在这种情况下var foo = {1, 2, 3};,{确实是"起始对象文字"符号而不是"起始代码块"符号.
相同的符号可以基于上下文具有多种含义.
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |