在JavaScript中,散布运算符的位置和顺序重要吗?
var item = {/* key value pairs here */};
var itemB = {/* key value pairs here */};
例如,在以下代码段中,newItem
总是具有相同的键值对吗?
var newItem = {
...item,
...itemB
};
为
var newItem = {
...itemB,
...item
};
答案 0 :(得分:6)
除了键值对的一般顺序,这实际上对对象的结果并没有太大的影响,唯一的不同是item
和itemB
具有重复的密钥。
例如。
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"}
因此,如果有重复的密钥,则扩展运算符的顺序确实很重要。
如果要为对象提供默认键值对,这将特别有用。您可以将默认键值对放在扩展运算符之前,如果扩展运算符使用的对象中不存在默认键值对,则它将用作新对象的默认值。