1 展开数组
let arr1 = [1,3,5,7]
console.log(...arr1);//1 3 5 7
2 合并数组
let arr1 = [1,3,5,7]
let arr2 = [2,4,6,12]
console.log(...arr1,...arr2,8,7);//1 3 5 7 2 4 6 12 8 7
3 在函数中使用(用于计算输入的所有数字的总和)
该方法适用于输入的参数数量不确定的情况。无需理会传入的参数有多少,只需要调用即可。
function sum(...numbers){
return numbers.reduce((preValue,currentValue)=>{
return preValue + currentValue;
})
}
console.log(sum(2,8,1,5));//16
4 在构造字面量对象时使用
4.1 实现对象的拷贝(copy)
let person ={name:'tom',age:26}
//拷贝(copy)
let person1 = {...person}
console.log(person1);//{name: "tom", age: 26}
拷贝出来的person1是一个独立的对象,改变person对象的值不会影响到person1
let person ={name:'tom',age:26}
//拷贝(copy)
let person1 = {...person}
console.log(person1);//{name: "tom", age: 26}
//修改person对象里面的name
person.name='jack';
console.log(person1);//{name: "tom", age: 26}
console.log(person);//{name: "jack", age: 26}
4.2 可以在克隆对象的同时添加新的key和value
let person ={name:'tom',age:26}
//克隆person 并添加telephone
let person3 = {...person,telephone:48756213457}
console.log(person3);//{name:'tom',age:26,telephone:48756213457}
注:展开运算符不可以展开对象。如下代码所示:
let person ={name:'tom',age:26}
console.log(...person);
同时拷贝两个对象并拼接时,如果存在相同的属性,会产生覆盖,取后一个对象中的属性值,如name和age属性。 如下代码所示:
let person ={name:'tom',age:26,hobby: "游泳"}
let p1 = {name:'jerry',age:16,tel:12354254}
let person4 = {...person,...p1}
console.log(person4);//{name: 'jerry', age: 16, hobby: '游泳', tel: 12354254}
关于构造字面量对象时更多相关知识:展开语法 - JavaScript | MDN