ES6中的...
运算符,到底能做些什么?
展开数组
let arr = [1,2,3,4]
console.log(...arr) 输出1 2 3 4
数组拼接
let arr1 = [1,2,3,4]
let arr2 = [5,6,7,8]
let arr3 = [...arr1,...arr2]
console.log(...arr3) 输出1 2 3 4 5 6 7 8
在函数中使用
要求:封装一个函数,两个数字相加的函数,
function sum(a,b){
return a + b
}
sum(1,2)
上面这个函数非常简单,现在加大难度,让你封装多个数字相加的函数,是不是有点头疼,此时展开运算符可以轻松解决这个问题
function sum(...numbers){
console.log(numbers) 输出一个数组 [1,2,3,4]
}
sum(1,2,3,4)
形参用...numbers
表示,numbers的个数取决于你实参传递的个数。注意:打印出的numbers是一个数组集合,然后使用数组的reduce方法求和
function sum(...numbers){
return numbers.reduce((value1,value2)=> {
return value1+value2
})
}
console.log(sum(1,2,3,4)) 输出10
深克隆对象
使用{...obj}
可以深克隆一个对象(前提是对象只有一层)
let star1 = {name: '坤坤', age: 38}
console.log({...star1}) 输出Object { name: "坤坤", age: 38 }
let star2 = {...star1}
console.log(star2) 输出Object { name: "坤坤", age: 38 }
如何证明是深克隆呢?在打印之前改变star2的name值就知道了
const star1 = {name: '坤坤', age: 38}
console.log({...star1}) 输出Object { name: "坤坤", age: 28 }
let star2 = {...star1}
star2.name = '肖战'
console.log(star2) 输出Object { name: "肖战", age: 28 }
扩展运算符能做的还有很多,等我学到了再慢慢补充吧