JavaScript-对象中散布运算符的位置/顺序重要吗?

时间:2018-07-30 17:41:06

标签: 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
};

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

1 个答案:

答案 0 :(得分:6)

除了键值对的一般顺序,这实际上对对象的结果并没有太大的影响,唯一的不同是itemitemB具有重复的密钥。

例如。

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

在这种情况下,以下两项将不相同。

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

-

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

因此,如果有重复的密钥,则扩展运算符的顺序确实很重要。

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