为什么不是`foo:'bar'`Javascript中的语法错误?

时间:2017-12-21 00:26:33

标签: javascript syntax ecmascript-6 ecmascript-5

我的一位同事写了ES6代码......

return map(orderedContentUuids, contentUuid => { uuid: contentUuid });

你可能猜测他打算返回对象{uuid: contentUuid },但由于它是一个箭头函数,大括号{实际上会启动一个新块。 (正确的代码是return map(orderedContentUuids, contentUuid => ({ uuid: contentUuid }));)。

但是,出乎意料的是,此代码转换并运行时没有错误。没有错误,因为uuid: contentUuid似乎评估为contentUuid

您可以看到,如果您放入JavaScript控制台foo: 'bar',它的评估结果为"bar"

咦?这是怎么回事。从什么时候开始就是有效的JS?

1 个答案:

答案 0 :(得分:6)

糟糕!我只是想通了。

foo: 'bar'被评估为"标签",我没有意识到这是一个JavaScript功能。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label