REST參數(shù)(剩余參數(shù))
MDN:剩余參數(shù)語法允許我們將一個不定數(shù)量的參數(shù)表示為一個數(shù)組凉夯。
剩余參數(shù)必須是函數(shù)參數(shù)的最后一個參數(shù),它和 arguments對象之間區(qū)別如下:
- 剩余參數(shù)只包含那些沒有對應(yīng)形參的實(shí)參臀脏,而
arguments
對象包含了傳給函數(shù)的所有實(shí)參饺著。 -
arguments
對象不是一個真正的數(shù)組拥娄,而剩余參數(shù)是真正的 Array實(shí)例沈矿,也就是說你能夠在它上面直接使用所有的數(shù)組方法,比如 sort,map庸疾,forEach或pop。 -
arguments
對象有一些附加的屬性 (如callee
屬性)当编。
使用場景
es5實(shí)現(xiàn):
function sortArguments() {
var args = Array.prototype.slice.call(arguments); //需要先轉(zhuǎn)成數(shù)組
var sortedArgs = args.sort();
return sortedArgs;
}
console.log(sortArguments(5, 3, 7, 1)); // shows 1, 3, 5, 7
es6實(shí)現(xiàn):
function sortRestArgs(...theArgs) {
var sortedArgs = theArgs.sort();
return sortedArgs;
}
console.log(sortRestArgs(5,3,7,1)); // shows 1, 3, 5, 7
獲取一個不定長度參數(shù)的長度
function fun1(...theArgs) {
alert(theArgs.length);
}
fun1(); // 彈出 "0", 因?yàn)閠heArgs沒有元素
fun1(5); // 彈出 "1", 因?yàn)閠heArgs只有一個元素
fun1(5, 6, 7); // 彈出 "3", 因?yàn)閠heArgs有三個元素