ES6引入了rest參數用於獲取函數的多余參數,實際就是替換arguments對象。
1.舉一個小栗子:
function add (...values){
let sum = 0;
for (var val of values) {
sum += val;
}
return sum;
}
add(2, 5, 3) //輸出 10
以上代碼利用rest參數可以向該函數傳入任意數目的參數
2.再舉一個栗子:
// arguments的寫法
const sortNumbers = () => Array.prototype.slice.call(arguments).sort();
// rest參數的寫法
const sortNumbers = (...numbers) => numbers.sort();
3.rest參數中的變量代表一個數組,所以數組特有的方法都可以用於這個變量。
栗子:
function push(array, ...items) {
items.forEach(function(item) {
array.push(item);
console.log(item); // 輸出 1 2 3
})
}
var a = [];
push(a, 1, 2, 3);
注意:rest參數之后不能再有其他參數(即只能是最后一個參數),否則報錯
栗子:
function f(a, ...b, c){} // 報錯
函數的length屬性不包括rest函數
栗子:
(function(a) {}).length // 1
(function(...a) {}).length // 0
(function(a, ...b) {}).length //1