1. 程式人生 > >js 剩餘引數

js 剩餘引數

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