(1) Rest 參數接受函數的多餘參數,組成一個數組,放在形參的最後,形式如下:
function func(a, b, ...theArgs){ // ...}
(2) Rest參數和arguments對象的區別:
rest參數只包括那些沒有給出名稱的參數,arguments包含所有參數
arguments 對象不是真正的數組,而rest 參數是數組實例,可以直接應用sort, map, forEach, pop等方法
arguments 對象擁有一些自己額外的功能
(3) 從 arguments 轉向數組
Rest 參數簡化了使用 arguments 獲取多餘參數的方法
// arguments 方法function func(a, b){ var args = Array.prototype.slice.call(arguments); console.log(args)
}
func(1,2)// Rest 方法function func(a, b, ...args){ // ...}
//注意,rest 參數之後不能再有其他參數(即,只能是最後一個參數),否則會報錯,比如下面的這段代碼就是錯的
function func(a, ...b, c) { // ...}// Rest parameter must be last formal parameter
//函數的 length 屬性,不包括rest參數
(function(a) {}).length // 1(function(...a) {}).length // 0(function(a, b, ...c)).length //
(4) Rest參數可以被結構(通俗一點,將rest參數的數據解析後一一對應)不要忘記參數用[]括起來,因爲它是數組
function f(...[a, b, c]) {
return a + b + c;
}
f(1)
//NaN 因爲只傳遞一個值,其實需要三個值 f(1, 2, 3) // 6 f(1, 2, 3, 4) // 6 (第四值沒有與之對應的變量名