【问题标题】:JavaScript - Does the placement/order of spread operator in an object matter?JavaScript - 对象中扩展运算符的放置/顺序是否重要?
【发布时间】:2019-01-07 00:45:45
【问题描述】:

在 JavaScript 中,展开运算符的放置和排序重要吗?

var item = {/* key value pairs here */};
var itemB = {/* key value pairs here */};

例如在下面的代码中,sn-ps 会不会newItem 总是有相同的键值对?

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

作为

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

【问题讨论】:

    标签: javascript json object ecmascript-6 spread-syntax


    【解决方案1】:

    除了键值对的一般顺序,它对对象的结果并没有真正的超级主要影响之外,唯一的其他区别是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"}
    

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 2015-05-10
      • 2021-01-17
      • 2017-02-23
      • 2021-04-09
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多