ES6中的...
運(yùn)算符,到底能做些什么恭陡?
展開數(shù)組
let arr = [1,2,3,4]
console.log(...arr) 輸出1 2 3 4
數(shù)組拼接
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
在函數(shù)中使用
要求:封裝一個(gè)函數(shù)蹬音,兩個(gè)數(shù)字相加的函數(shù),
function sum(a,b){
return a + b
}
sum(1,2)
上面這個(gè)函數(shù)非常簡(jiǎn)單休玩,現(xiàn)在加大難度著淆,讓你封裝多個(gè)數(shù)字相加的函數(shù),是不是有點(diǎn)頭疼拴疤,此時(shí)展開運(yùn)算符可以輕松解決這個(gè)問題
function sum(...numbers){
console.log(numbers) 輸出一個(gè)數(shù)組 [1,2,3,4]
}
sum(1,2,3,4)
形參用...numbers
表示永部,numbers的個(gè)數(shù)取決于你實(shí)參傳遞的個(gè)數(shù)。注意:打印出的numbers是一個(gè)數(shù)組集合呐矾,然后使用數(shù)組的reduce方法求和
function sum(...numbers){
return numbers.reduce((value1,value2)=> {
return value1+value2
})
}
console.log(sum(1,2,3,4)) 輸出10
深克隆對(duì)象
使用{...obj}
可以深克隆一個(gè)對(duì)象(前提是對(duì)象只有一層)
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 = '肖戰(zhàn)'
console.log(star2) 輸出Object { name: "肖戰(zhàn)", age: 28 }
擴(kuò)展運(yùn)算符能做的還有很多,等我學(xué)到了再慢慢補(bǔ)充吧