【问题标题】:Why ISN'T `foo: 'bar'` a syntax error in Javascript? [duplicate]为什么不是 `foo: 'bar'` Javascript 中的语法错误? [复制]
【发布时间】:2018-06-03 14:44:34
【问题描述】:

我的一个同事编写了 ES6 代码行...

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

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

但是,出乎意料的是,这段代码编译并运行时没有出现错误。没有错误,因为 uuid: contentUuid 似乎评估为 contentUuid

然后您可以看到,如果您将 foo: 'bar' 输入 JavaScript 控制台,它的计算结果为 "bar"

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

【问题讨论】:

    标签: javascript syntax ecmascript-6 ecmascript-5


    【解决方案1】:

    哎呀。我刚刚想通了。

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

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

    【讨论】:

    • 在这种情况下,花括号实际上不会被视为对象。
    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 2020-10-03
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2017-06-23
    相关资源
    最近更新 更多