【问题标题】:"use strict"; now allows duplicated properties?“使用严格”;现在允许重复的属性?
【发布时间】:2015-07-08 07:58:37
【问题描述】:

我刚刚发现在最后的 Chrome 42 和 FF 37.0.2 这行代码是完全合法的

"use strict";
var o = { p: 1, p: 2 };

(从MDN复制粘贴)

在 IE 10-11 和 Opera 28.0.1750 中,它会按预期抛出错误。

同时,

abc=0;

按预期导致错误(未声明的变量)。

有人知道是什么导致了这种变化吗?

【问题讨论】:

标签: javascript google-chrome firefox strict


【解决方案1】:

这里有一个 Bugzilla ticket。根据我收集的信息(这里和我查找的其他页面),重复属性在 ECMAScript 版本 6 中是合法的,与 ES5 相反,在严格模式下它是被禁止的。

【讨论】:

  • 这看起来确实是一个糟糕的糟糕设计决策。
  • @Kaiido 是的,我明白了。关键是 - 这还行不通:) 此外,它什么时候可以工作......我真的不相信这个功能真的是必需的,并且无法解决。另一方面,我个人遇到了属性重复的问题......
  • @Kaiido 不,因为{...obj, ...objPatch}
  • 是的,在某些情况下,将重复的“补丁”值放在文字对象属性列表字符串的末尾会很好。但是这种罕见的优势不值得失去对象的奇妙特性,即它们保证没有重复键。编程比非唯一键更频繁地需要唯一键。自计算机科学诞生以来,唯一键一直是语义关联数组的一个主要方面。
猜你喜欢
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
相关资源
最近更新 更多