JavaScript - 对象中展开运算符的 placement/order 重要吗?
JavaScript - Does the placement/order of spread operator in an object matter?
在 JavaScript 中,展开运算符的放置和排序重要吗?
var item = {/* key value pairs here */};
var itemB = {/* key value pairs here */};
例如,在下面的代码片段中,newItem
总是具有相同的键值对吗?
var newItem = {
...item,
...itemB
};
作为
var newItem = {
...itemB,
...item
};
除了键值对的一般顺序之外,这对对象的结果并没有太大的影响,唯一的区别是 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"}
因此,如果存在重复键,则展开运算符的顺序很重要。
如果您希望为对象提供默认键值对,这将特别有用。您可以将默认键值对放在展开运算符之前,如果它们不存在于展开运算符中使用的对象中,它将作为新对象的默认值。
在 JavaScript 中,展开运算符的放置和排序重要吗?
var item = {/* key value pairs here */};
var itemB = {/* key value pairs here */};
例如,在下面的代码片段中,newItem
总是具有相同的键值对吗?
var newItem = {
...item,
...itemB
};
作为
var newItem = {
...itemB,
...item
};
除了键值对的一般顺序之外,这对对象的结果并没有太大的影响,唯一的区别是 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"}
因此,如果存在重复键,则展开运算符的顺序很重要。
如果您希望为对象提供默认键值对,这将特别有用。您可以将默认键值对放在展开运算符之前,如果它们不存在于展开运算符中使用的对象中,它将作为新对象的默认值。