不带大括号的 Javascript 键/值对
Javascript key/value pair with no braces
本文关键字:Javascript 值对 更新时间:2023-09-26
我注意到在nodejs和浏览器中,你可以给出一个不带大括号的键/值对,并且它被接受。它的计算结果是该对的一半值。例如:
> { id: 5 }
{ id: 5 }
> id: 5
5
但是如果你引用id
,那么节点需要更多的输入:
> "id": 5
...
这到底是怎么回事呢?没有大括号时id: 5
什么语法?
这不是
一个错误。您正在声明一个标签,后跟一个Number
文本。
控制台默认打印出代码中最后一个表达式的结果。
因此,它打印5
.
您的困惑源于这样一个事实,即完全相同的语法可能意味着完全不同的事情,具体取决于上下文。
这是由 JavaScript 解析器根据规范的规则来决定的。
另一个例子是:
{}
这是对象文字还是块?上下文提供了答案。
从规格:
语句可以以标签为前缀。带标签的语句仅是 与标记的中断和继续语句结合使用。 ECMAScript 没有 goto 语句。语句可以是 LabelledStatement,它本身可以是 LabelledStatement的一部分, 等等。以这种方式引入的标签统称为 作为描述个人语义时的"当前标签集" 语句。
假设你写了一个嵌套的for..loop
。
for(var x = 0; x < 10; x++) {
for(var y = 0; y < 10; y++) {
if(thereIsAProblem) {
break;
}
}
console.log('done a column');
}
您希望脱离内部循环并开始外部循环的下一次迭代,但不希望运行console.log
。
您可以使用标签来扩充循环,以准确指定要从何处继续。
outer: for(var x = 0; x < 10; x++) {
for(var y = 0; y < 10; y++) {
if(thereIsAProblem) {
continue outer;
}
}
console.log('done a column');
}
虽然从技术上讲,这是 JavaScript 中的一个标准功能,但你不会经常看到它在野外使用,因为几乎总是有一种更惯用的做事方式。
我认为这是JavaScript解析器的错误。当您输入id : anything : 5
时,它会输出相同的结果(这也适用于 Chrome)。
相关文章:
- 比较包含多个值对的两个JavaScript数组
- 在url参数javascript中存储键值对列表
- 从JavaScript中的名称-值对字符串中删除值
- JavaScript 在函数中声明键值对
- 在JavaScript中为表单元素生成键值对
- 按 [field] 值对 javascript 数组进行排序会给出错误的顺序
- 动态插入并从数组中检索键值对 - Javascript
- javascript对象键值对
- 按javascript中的值对Map进行排序
- 在javascript中对复选框值进行排序
- 如何通过在JavaScript对象中的多个键/值对中查找最小值来选择键/值配对
- Javascript:添加键值对文字,给出未定义的结果
- 如何在Javascript中对属于对象的键中的多个值进行分组
- 从字符串javascript中获取键值对
- 当键是数字时,如何在JavaScript中对对象值进行排序
- 如何在Acrobat中使用javascript获取PDF表单字段的所有键值对
- javascript中未定义键值对
- 将javascript变量列表转换为对象键/值对
- 插入键=>来自提交的Javascript对象的PHP中的值对
- 如何在JavaScript中对具有多个字段值的对象数组进行排序