js 剩餘引數
阿新 • • 發佈:2019-02-16
JS函式內部有個arguments物件,可以拿到全部實參。現在ES6給我們帶來了一個新的物件,可以拿到除開始引數外的引數,即剩餘引數。
這個新的物件和arguments不一樣,它是程式設計師自定義的一個普通識別符號,只是需要在前面加上三個點:...
function func(a,...rest){
console.log(rest);
}
func(1); //[]
func(1,2,3,4); //[2,3,4]
在前面定義2個引數
剩餘引數嘛,所以後面就不要再跟其它的引數了,不然會報錯function func(a,b,...rest){ console.log(rest); } func(1,2); //[] func(1,2,3,4); //[3,4]
當您使用剩餘引數後,函式的length屬性會發生一些變化
function func(a,b,...rest){
console.log(rest);
console.log(func.length);//2
}
func(1,2); //[]
func(1,2,3,4); //[3,4]
剩餘引數前面可以一個引數都沒有
function func(...rest){ console.log(rest); console.log(func.length);//0 } func(1,2); //[1,2] func(1,2,3,4); //[1,2,3,4]
arguments和剩餘引數的區別
- arguments是一個偽陣列(Array-like)
- 剩餘引數是一個真正陣列(Array),具有Array.prototype上的所有方法
- arguments上有callee,callee上有caller