说明
展开语法(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