rest operator and spread operator

 

一、rest operator

var sum = function (...arr) {
    var result = 0;
    for (var i = 0; i < arr.length; i++) {
        result += arr[i];
    }
    return result;
};
console.log(sum(1, 2, 3));

其結果為

說明:

當這「...」符號用在 function parameter 時,

則表示 function 接受來自 function argument 的不定長參數,

白話一點,你可以把帶有「...」符號的變數,視為一陣列去操作他。

 

二、spread operator

var number = [1, 2, 3];
console.log(...number);

console.log(Math.max(...number));

其結果為

說明:

如上例,number 是一個陣列,相等於 ...number,

雖然是相同的東西,但這令人感覺作用不大啊,多此一舉?

他可以用在 Math.max() 方法,Math.max() 方法只接受不定長參數,而不接受陣列帶入;

可利用 ...number 變數可以將陣列合進 ...number 變數,然後再餵給Math.max() 方法。