Pau*_*rth 3 javascript node.js
我注意到在nodejs和浏览器中,你可以给出没有大括号的键/值对,并且它被接受.它评估该对的一半值.例如:
> { id: 5 }
{ id: 5 }
> id: 5
5
Run Code Online (Sandbox Code Playgroud)
但如果你引用id
,那么节点需要更多输入:
> "id": 5
...
Run Code Online (Sandbox Code Playgroud)
那么这里发生了什么?什么语法id: 5
没有大括号?
这不是一个错误.您正在声明一个标签,后面是一个Number
文字.
控制台默认打印出代码中最后一个表达式的结果.
因此它打印5
.
您的困惑源于这样一个事实:完全相同的语法可能意味着完全不同的东西,具体取决于上下文.
这是JavaScript解析器根据规范的规则来决定的.
另一个例子是:
{}
Run Code Online (Sandbox Code Playgroud)
这是一个对象文字还是块?上下文提供了答案.
从规格:
声明可以以标签为前缀.带标签的语句仅与带标签的break和continue语句一起使用.ECMAScript没有goto语句.Statement可以是LabelledStatement的一部分,LabelledStatement本身可以是LabelledStatement的一部分,依此类推.在描述各个语句的语义时,以这种方式引入的标签统称为"当前标签集".
归档时间: |
|
查看次数: |
75 次 |
最近记录: |