重复的对象字面量属性
ES5
严格模式为重复的对象字面量属性引入了一个检查,若找到重复的属性名,就会抛出错误。例如,以下代码就有问题:
"use strict";
var person = {
name: "Nicholas",
name: "Greg" // syntax error in ES5 strict mode
};
在 ES5
严格模式下运行时,第二个 name
属性会造成语法错误。但 ES6
移除了重复属性的检查,严格模式与非严格模式都不再检查重复的属性。当存在重复属性时,排在后面的属性的值会成为该属性的实际值,如下所示:
"use strict";
var person = {
name: "Nicholas",
name: "Greg" // no error in ES6 strict mode
};
console.log(person.name); // "Greg"
在本例中,person.name
的值为 "Greg"
,因为这是赋给该属性的最后一个值。