我正在阅读MDN javascript 参考,因此以下代码不再返回false
:
function haveES6DuplicatePropertySemantics(){
"use strict";
try {
({ prop: 1, prop: 2 });
// No error thrown, duplicate property names allowed in strict mode
return true;
} catch (e) {
// Error thrown, duplicates prohibited in strict mode
return false;
}
}
在 ECMAScript 5 严格模式代码中,重复的属性名称被视为 SyntaxError。随着计算属性名称的引入使得运行时重复成为可能,ECMAScript 6 取消了这个限制。
我的问题是,在初始值设定项中允许重复的属性名称有什么实际好处?我可以看到,当对象属性被动态分配时,这有时可能会发生,但由于优先顺序显然决定了在新创建的对象上实际设置了哪些属性——这似乎比最好避免的不确定行为更重要。