我正在阅读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;
}
}
Run Code Online (Sandbox Code Playgroud)
在ECMAScript 5严格模式代码中,重复的属性名称被认为是SyntaxError.通过引入计算属性名称可以在运行时进行复制,ECMAScript 6已经删除了此限制.
我的问题是,在初始化器中允许重复的属性名称有什么实际好处?我可以看到,当动态分配对象属性时,有时会发生这种情况,但由于优先顺序显然决定了在新创建的对象上实际设置了哪些属性 - 这似乎不仅仅是最好避免的无限行为.