ES6 的其餘運算子

又是你。

把你包起來❤

展開運算子 87 分像,但差在展開運算子是把 array 或 object 給「拆開來」,其餘運算子是把「沒有殼的 array 或 object」給「包起來」,變成一個 array 或 object。

什麼叫沒有殼的 array 或 object?就是你在用「解構」或是「傳參數到 function」的時候。

舉個解構的例子:

1
2
3
let arr = [1, 2, 3, 4]
let [...rest] = arr
console.log(rest) // [1, 2, 3, 4]

你可以把它想像成這樣

1
let [..rest] = 1, 2, 3, 4

我知道這樣做看起來很脫褲子放屁,但只是方便理解。它的用法是「把剩餘的部分給包起來」:

1
2
3
let arr = [1, 2, 3, 4]
let [n1, n2, ...rest] = arr
console.log(rest) // [3, 4]

但要注意,rest 必須放在最後面,畢竟它是把「剩下」的東西給集合起來。

object 也是同樣的操作方式:

1
2
3
4
5
6
7
8
let obj = {
a: 1,
b: 2,
c: 3
}
let {a, ...obj2} = obj
console.log(a) // 1
console.log(obj2) // {b: 2, c: 3}

不懂的話,一樣想成「沒有殼的 object」就好:

1
2
3
4

let {a, ...obj2} = a: 1, b: 2, c: 3
console.log(a) // 1
console.log(obj2) // {b: 2, c: 3}

搭配 function

傳到 function 裡的參數就很像「沒有殼的 array」:

1
2
3
4
5
function add(a, ...rest) {
console.log(a) // 1
console.log(rest) // [2, 3, 4]
}
add(1, 2, 3, 4) // 沒有殼的 array

搭配解構來用也行:

1
2
3
4
5
function add([a, ...rest]) {
console.log(a) // 1
console.log(rest) // [2, 3, 4]
}
add([1, 2, 3, 4]) // 改成解構
ES6 的預設參數值 mentor-program-day14
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×