1. 展開運算子(Spread Operator):把陣列展開成參數
在陣列前面加上...,即可把每個陣列元素逐一展開,直接餵給函式當作若干個參數輸入。假設有一個函式只能吃參數,例如Math.max(),返回所有參數中的最大值:
Math.max(9, 3, 7, 13, 5); //13
直接餵陣列,它不吃:
Math.max([9, 3, 7, 13, 5]); //NaN
在陣列前面加上展開運算子就可以了:
Math.max(...[9, 3, 7, 13, 5]); //13
2. 其餘運算子(Rest Operator):把參數合併成陣列
跟展開運算子剛好相反。在陣列前面加上...,即可把所有參數合併成一個陣列,再餵給只吃陣列的函式當作輸入值。效果有點類似一般函式物件的arguments屬性(以類陣列型態存放所有輸入的參數)。假設有一個函式預設只能吃陣列。例如輸入陣列,計算其項目個數:
let count = arr => arr.length; console.log(count([6, 9, 37, 17, 64])); //5
若餵一堆參數它是不吃的:
console.log(count(6, 9, 37, 17, 64)); //undefined
但若幫函式的參數加上其餘運算子,就可以囉:
let count = (...arr) => arr.length; console.log(count(6, 9, 37, 17, 64)); //5
參考:
JavaScript ES6 中的展開運算子(spread operator)和其餘運算子(rest operator) ~ PJCHENder 那些沒告訴你的小細節
沒有留言:
張貼留言