gpt4 book ai didi

javascript - JS : two or more object properties with the same name in non-strict mode?

转载 作者:行者123 更新时间:2023-11-29 21:31:24 25 4
gpt4 key购买 nike

阅读 David Flanagan 的权威指南(第 6 版)时偶然发现:

In strict mode, it is a syntax error for an object literal to define two or more properties by the same name. (In non-strict mode, no error occurs.)

我找不到任何示例 - 这可能吗?我试过了

var obj = {prop: 'foo', prop: 'bar'};

...但当然,在严格和非严格模式下,我最终只有一个属性(Object {prop: "bar"})。

这个实现依赖吗?这本书是 2011 年版,里面有 ECMAScript 5。

我应该读一本更新的书吗?

最佳答案

这本书是对的; ES5 规范指出,在对象字面量中定义多个同名属性是语法错误。

参见 section 11.1.5在这附近:

If previous is not undefined then throw a SyntaxError exception if any of the following conditions are true

和信息丰富的Annex C :

It is a SyntaxError if strict mode code contains an ObjectLiteral with more than one definition of any data property (11.1.5).

您正在测试的实现是正确的,但是,因为当前的 ECMAScript 规范是 ES2015,它取消了这个限制!它未在其 Annex C 中列出或其他任何地方。

如果非要我猜的话,那是因为删除的原因是为了与计算属性保持一致,所以这些文字总是等价的:

({ a: 1, ['a']: 2 })
({ a: 1, a: 2 })

但是,是的,每个人都是对的。\o/

关于javascript - JS : two or more object properties with the same name in non-strict mode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36321790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com