我为发布一个看起来很复杂的问题道歉,(我知道,这里有一堆类似的标题问题),但是现有的问题似乎都不适合我的情况。
简而言之,冒号在这里做了什么:
<script>
'use strict';
foo: 1;
//whatever else
</script>
我认为这是一个语法错误,但事实并非如此。我认为,这不是一个标签,因为添加一行break foo;
会引发Uncaught SyntaxError: Undefined label 'foo'
(尽管a doc page正好表明这是一个标签)。
我想这是JavaScript语法的最新补充,因为我从来没有听说过使用冒号。
如果有人想知道,为什么我要问这个,这是我的解释:我正在阅读an MDN doc page并且有一个例子:
var func = () => { foo: 1 };
// Calling func() returns undefined!
它表明,在这种情况下,花括号被视为块分隔符而不是对象文字。所以我认为,某种程度上foo: 1
本身必须在语法上合法。事实确实如此。
有a question,它应该涵盖JavaScript中每次使用冒号的内容,但它没有提到这一点,也没有回答。
答案 0 :(得分:3)
如果你已经阅读了你所链接的页面的更多内容,你就会明白为什么会这样写。
var func = () => { foo: 1 };
这是尝试从箭头函数返回对象。
由于这里解释的原因,这不起作用:
这是因为大括号(
{}
)内的代码被解析为一系列语句(即foo
被视为标签,而不是对象文字中的键。 (source)
因此返回的值需要包含在括号中:
var func = () => ({foo: 1});
要真正回答你的问题:
你不能仅仅将foo: 1
脱离上下文。