ES6新標準之Rest

arguments只在函數內部起作用,是該函數調用者傳入的所有參數。arguments是個類數組。將arguments轉換為真正數組一般使用Array.prototype.slice.call(arguments),而rest參數接收函數多余的參數,形成的是一個真正的數組,可以直接應用sort, map等數組的方法

因為js函數允許接收任意個參數,所以如果有需求要求獲得除已定參數之外的所有參數,我們就得這么去寫:

var rest = [];

function test(x,y) {

let i ;

let len = arguments.length;

if (len > 2) {

for (i = 2; i<len;i++){

rest.push(arguments[i]);

}

}

console.log(x,y);//1 2

console.log(rest);//[3, 4, 5, 6]

}
test(1,2,3,4,5,6);

這時候ES6的Rest實現起來就容易多了。(Rest參數必須寫在形參的后面,用...標識)上面的函數函數可以改成下面這樣:

function test(x,y,...rest) {

console.log(x,y);

console.log(rest);

}

test(1,2,3,4,5,6);//結果:console.log(x,y);//1 2 ?, ?console.log(rest);//[3, 4, 5, 6]

test(1);//結果:console.log(x,y);// 1 undefined ?, ?console.log(rest);//[]


傳入函數的參數先綁定x和y,剩余的參數以數組的形式賦給了rest。如以上第二個test函數連正常的參數都沒傳滿的時候, Rest則接收一個空數組。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容