JavaScript语法中的foo:代表什么意思?

4
以下代码是什么意思?(它不是JSON,这段代码不会被JS解释器识别为错误)
foo: 5

问题的原因如下。在箭头函数示例中,有一个示例显示了JSON和代码块语法之间的混淆:
var func = () => { foo: 1 };

func()返回undefined,而上述代码并不失败。我曾经试过将只有"foo: 5"这一行代码放在js模块中 - 它可以正常工作... 我不知道":"运算符和标签在js中是什么意思。


1
这只是一个标签,仅此而已。 - Niet the Dark Absol
可能是从箭头函数返回对象的重复问题。 - Tamas Hegedus
1个回答

7

这是一个 JavaScript 标签: 文档在此

你可以使用标签来标识一个循环,然后使用 break 或 continue 语句来指示程序是否应该中断循环或继续执行。

请注意,JavaScript 没有 goto 语句,您只能使用带有 break 或 continue 的标签。

示例用法(来自 MDN)

var itemsPassed = 0;
var i, j;

top:
for (i = 0; i < items.length; i++){
  for (j = 0; j < tests.length; j++) {
    if (!tests[j].pass(items[i])) {
      continue top;
    }
  }

  itemsPassed++;
}

根据引用的文档,JS标签仅适用于循环。在我的示例中,标签后面没有循环。但这仍然是合法的代码。 - dzilbers
@dzilbers 如果您继续阅读文档,它会说明您可以使用块(章节:“使用带有break的标记块”)甚至函数。Javascript解析器将期望在label后跟随一个表达式。除非您处于严格模式,否则它将限制后面可以跟随什么。 - Aᴄʜᴇʀᴏɴғᴀɪʟ
我现在已经查看了MDN和ECMA规范关于标记语句的内容。这很奇怪(如果没有任何使用它们的原因,为什么不与循环或块相邻的标签也是可以接受的呢?),但这是真的... - dzilbers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接