什么是 JavaScript 简写属性?

新手上路,请多包涵
var obj = { prop = [1,2,3] };

上面的代码包含一个拼写错误,应该有一个冒号而不是 = 。但让我感到惊讶的是 VM 错误消息:

 var obj = { prop = [1,2,3] };
            ^^^^^^^^^^^^^^
SyntaxError: Invalid shorthand property initializer

我搜索了“JavaScript shorthand properties”,但我仍然不清楚这个术语。在此错误消息的上下文中,“速记属性”是什么意思?

原文由 exebook 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 372
2 个回答

使用 ES6,您可以使用速记属性名称,这样您就可以编写类似这样的内容。

 var s = 'abc';
var n = 1;
var o = { s, n }; // This is equivalent to { s: s, n: n }

在您的情况下, prop = [1,2,3] 被解析为一个速记属性(在上面的示例中为 sn ),但它不是属性名称。

原文由 snak 发布,翻译遵循 CC BY-SA 3.0 许可协议

Firefox 有一条不同的错误消息,我认为它更有用:

 SyntaxError: missing : after property id

也就是说,缺少 : 。如您所说,您应该使用 : 而不是 =

明确地说,“速记属性”在 ES6 规范中没有任何意义。这只是 Chrome 发明的一些表达方式,以帮助您注意到您的错误。看来他们失败了。

snak 的猜测 是 Chrome 指的是由 IdentifierReference 组成的 PropertyDefinition ,在 ObjectLiteral 中使用。显然 prop = [1,2,3] 不是 IdentifierReference ,因此抱怨它可能是有意义的。抱怨它不是更常见形式的 PropertyName : AssignmentExpression 中的 PropertyDefinition 会更有意义。或 MethodDefinition

原文由 Oriol 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏