JavaScript—对象中排列运算符的位置/顺序是否重要?

JavaScript—对象中排列运算符的位置/顺序是否重要?,javascript,json,object,ecmascript-6,spread-syntax,Javascript,Json,Object,Ecmascript 6,Spread Syntax,在JavaScript中,排列运算符的位置和顺序是否重要 var item = {/* key value pairs here */}; var itemB = {/* key value pairs here */}; 例如,在以下代码段中,newItem是否始终具有相同的键值对 var newItem = { ...item, ...itemB }; 作为 除了键值对的一般顺序对对象的结果没有太大影响之外,唯一的区别是item和itemB有重复的键 比如说 var it

在JavaScript中,排列运算符的位置和顺序是否重要

var item = {/* key value pairs here */};
var itemB = {/* key value pairs here */};
例如,在以下代码段中,
newItem
是否始终具有相同的键值对

var newItem = {
    ...item,
    ...itemB
};
作为


除了键值对的一般顺序对对象的结果没有太大影响之外,唯一的区别是
item
itemB
有重复的键

比如说

var item = {firstName: "Bob"};
var itemB = {lastName: "Smith", firstName: "Tim"};
在这种情况下,以下两项将不相同

var newItem = {
    ...item,
    ...itemB
};
// {lastName: "Smith", firstName: "Tim"}
-

因此,如果存在重复的键,则排列运算符的顺序并不重要

如果您希望为对象提供默认键值对,这将特别有用。您可以将默认键值对放在扩展运算符之前,如果扩展运算符中使用的对象中不存在这些键值对,则它将作为新对象的默认值

var newItem = {
    ...item,
    ...itemB
};
// {lastName: "Smith", firstName: "Tim"}
var newItem = {
    ...itemB,
    ...item
};
// {lastName: "Smith", firstName: "Bob"}