“使用严格”;现在允许重复的属性?
Posted
技术标签:
【中文标题】“使用严格”;现在允许重复的属性?【英文标题】:"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;
按预期导致错误(未声明的变量)。
有人知道是什么导致了这种变化吗?
【问题讨论】:
见this discussion on why the behavior changed。 密切相关:What's the purpose of allowing duplicate property names? 【参考方案1】:这里有一个 Bugzilla ticket。根据我收集的信息(这里和我查找的其他页面),重复属性在 ECMAScript 版本 6 中是合法的,与 ES5 相反,在严格模式下它是被禁止的。
【讨论】:
绝对developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 这看起来确实是一个糟糕的糟糕设计决策。 @Kaiido 是的,我明白了。关键是 - 这还行不通:) 此外,它什么时候可以工作......我真的不相信这个功能真的是必需的,并且无法解决。另一方面,我个人遇到了属性重复的问题...... @Kaiido 不,因为...obj, ...objPatch
是的,在某些情况下,将重复的“补丁”值放在文字对象属性列表字符串的末尾会很好。但是这种罕见的优势不值得失去对象的奇妙特性,即它们保证没有重复键。编程比非唯一键更频繁地需要唯一键。自计算机科学诞生以来,唯一键一直是语义关联数组的一个主要方面。以上是关于“使用严格”;现在允许重复的属性?的主要内容,如果未能解决你的问题,请参考以下文章