javascript ...展开运算符

说明

展开语法(Spread syntax),可展开 对象 或 数组

应用场景

  • 给函数传参
  • 深拷贝

展开对象

案例1

有下面 lilei 对象

var lilei = {
    name: '李雷',
    age: 20
};

要定义 zhangsan 对象,该对象的值与 lilei 完全相同

// 展开 lilei 对象,将 lilei 对象的key、value放入到 zhangsan 中
var zhangsan = { ...lilei };

此时修改 zhangsan,不会对 lilei 有任何影响:

zhangsan.age = 22 //修改值,互不影响

console.log("源对象:", lilei)
console.log("复制对象:", zhangsan) //修改值,互不影响

案例2

展开对象同时加新key、value

// 展开 lilei 对象,将 lilei 对象的key、value放入到 lisi 中,同时加入新key、value
var lisi = { ...lilei, sex:'男' };

展开数组

案例1

有下面数组:

var arr = [1, 2, 3];

要定义 arr2 数组,该数组的元素与 arr 完全相同

var arr2 = [...arr];

此时修改 arr2,不会对 arr1 有任何影响:

arr2.push(4);

console.log("源数组:", arr)
console.log("复制数组:", arr2) //修改值,互不影响

案例2

展开数组的同时加新元素

var arr2 = [...arr,4,5,6];

传参时使用

function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

// 展开数组,将数组中的3个元素,传入 sum() 函数
const res = sum(...numbers)
console.log(res);

参考:
https://geek-docs.com/javascript/javascript-ask-answer/282_hk_1713397214.html


原文出处:/show_1IX2ufKPi7Ge.html