javascript-函數(shù)中的 arguments 對象

JavaScript函數(shù)具有像數(shù)組一樣的對象,這些對象稱為arguments,與傳遞給函數(shù)的參數(shù)相對應。傳遞給JavaScript函數(shù)的所有參數(shù)都可以使用arguments對象來引用。
eg:

function add(num1, num2) {
   var res = num1 + num2;
   return res;
}
var r = add(7, 8);
console.log(r);//結果是15

在上面的函數(shù)中,num1和num2是兩個參數(shù)。你可以使用名為num1和num2的arguments來引用這些參數(shù)。除了arguments名稱之外,你還可以使用JavaScript數(shù)組,如對象arguments來引用它們。所以,上面的函數(shù)可以重寫,eg:

function add(num1, num2) {
    var res = arguments.length;
    return res;
}
var r = add(7, 8);
console.log(r);//結果是15

在JavaScript函數(shù)中,arguments對象用于訪問或引用傳遞給函數(shù)的所有參數(shù)。arguments對象是可用于函數(shù)的局部變量。arguments對象的長度相當于傳遞給函數(shù)的arguments數(shù)量。請看下面的代碼,作為輸出將得到2,因為有兩個arguments傳遞給函數(shù):

function add(num1, num2) {
    var res = arguments.length;
    return res;
}
var r = add(7, 8);
console.log(r);//結果是2
arguments對象不是純數(shù)組

JavaScript的arguments對象不是純粹的JavaScript數(shù)組。你不能對arguments對象執(zhí)行諸如push,pop,slice等操作。正如你將在下面列出的代碼中所看到的那樣,執(zhí)行push操作會引發(fā)異常,因為arguments.push不是函數(shù)。但是,你可以在arguments對象數(shù)組中設置特定的項。首先,你可以使用索引0設置數(shù)組的第一個項:

function add(num1, num2) {
    arguments[0] = 15;//num1的值被更新
    var res = num1 + num2;//15+8
    return res;
}
var r = add(7, 8);
console.log(r);//輸出結果是23
將arguments對象轉換為數(shù)組

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

function add(num1, num2) {
    var arg = Array.prototype.slice.call(arguments);
    console.log(arg); // 結果是[7, 8]
    console.log(arg.pop());// pop()方法用于刪除并返回數(shù)組的最后一個元素。結果是 8
    console.log(arg); // 結果是[7]
}
var r = add(7, 8);

注意:

  • arguments對象的長度等于傳遞給函數(shù)的參數(shù)的數(shù)量。
  • arguments對象是類似數(shù)組的對象,但不是JavaScript數(shù)組。
  • 你不能對arguments對象使用其他JavaScript數(shù)組方法,例如push,pop,slice等等。
  • JavaScript arguments對象索引從零開始。所以第一個參數(shù)將被arguments[0]引用,第二個參數(shù)將被arguments[1]引用,等等。

簡單地說,JavaScript arguments對象是一個類似數(shù)組的對象,它引用傳遞給函數(shù)的參數(shù)。在ECMAScript 6中,引入的rest參數(shù)現(xiàn)已被廣泛用來替代函數(shù)中的arguments對象用于變量數(shù)或參數(shù)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容