函數中的 arguments 對象

JavaScript函數具備像數組同樣的對象,這些對象稱爲arguments,與傳遞給函數的參數相對應。傳遞給JavaScript函數的全部參數均可以使用arguments對象來引用。數組

 

如今咱們開始學習,仔細看下面列出的代碼:函數

 

function add(num1, num2) {學習

    var res = num1 + num2;spa

    return res;prototype

}rest

var r = add(7, 8);對象

console.log(r);索引

 

在上面的函數中,num1和num2是兩個參數。你可使用名爲num1和num2的arguments來引用這些參數。除了arguments名稱以外,你還可使用JavaScript數組,如對象arguments來引用它們。因此,上面的函數能夠重寫,以下所示:ip

 

function add(num1, num2) {io

    var res = arguments[0] + arguments[1];

    return res;

}

var r = add(7, 8);

console.log(r);

 

在JavaScript函數中,arguments對象用於訪問或引用傳遞給函數的全部參數。arguments對象是可用於函數的局部變量。arguments對象的長度至關於傳遞給函數的arguments數量。請看下面的代碼,做爲輸出將獲得2,由於有兩個arguments傳遞給函數:

 

function add(num1, num2) {

    var res = arguments.length;

    return res;

}

var r = add(7, 8);

console.log(r);

 

arguments對象不是純數組

 

JavaScript的arguments對象不是純粹的JavaScript數組。你不能對arguments對象執行諸如push,pop,slice等操做。正如你將在下面列出的代碼中所看到的那樣,執行push操做會引起異常,由於arguments.push不是函數。

 

function add(num1, num2) {

    arguments.push(78);

    var res = num1 + num2;

    return res;

}

 

能夠設置arguments對象

 

你能夠在arguments對象數組中設置特定的項。首先,你可使用索引0設置數組的第一個項,以下所示:

 

function add(num1, num2) {

    arguments[0] = 15;

    var res = num1 + num2;

    return res;

}

var r = add(7, 8);

console.log(r);

 

在add函數中,num1和arguments[0]引用相同的值。因此,當你更新arguments[0]時,num1的值也會被更新。對於上面的代碼,輸出將是23。

 

將arguments對象轉換爲數組

 

正如咱們在這篇文章中介紹的那樣,JavaScript函數arguments對象不是純數組。除了長度屬性外,它沒有任何其餘屬性。可是,你可使用Array.prototype.slice.call將arguments對象轉換爲數組,以下所示:

 

function add(num1, num2) {

    var arg = Array.prototype.slice.call(arguments);

    console.log(arg.pop());

}

 

在ECMAScript 6中,你能夠將arguments對象轉換爲一個數組,以下所示:

 

function add(num1, num2) {

    var arg = Array.from(arguments);

    console.log(arg.pop());

}

 

結論

 

總而言之,關於arguments對象須要謹記的一些重要事情有:

 

  • arguments對象的長度等於傳遞給函數的參數的數量。

  • arguments對象是相似數組的對象,但不是JavaScript數組。

  • 你不能對arguments對象使用其餘JavaScript數組方法,例如push,pop,slice等等。

  • JavaScript arguments對象索引從零開始。因此第一個參數將被arguments[0]引用,第二個參數將被arguments[1]引用,等等。

 

簡單地說,JavaScript arguments對象是一個相似數組的對象,它引用傳遞給函數的參數。在ECMAScript 6中,引入的rest參數現已被普遍用來替代函數中的arguments對象用於變量數或參數。

相關文章
相關標籤/搜索