首頁  >  文章  >  web前端  >  Javascript中arguments物件詳解_基礎知識

Javascript中arguments物件詳解_基礎知識

WBOY
WBOY原創
2016-05-16 16:33:131074瀏覽

在上篇文章中我們討論了javascript中的預設參數,這篇文章,我們來討論下javascript的arguments參數物件。

如下例的一個函數,我們如何根據傳入參數的不同來做不同的處理呢?

複製程式碼 程式碼如下:

function addAll () {
    // What do we do here?
}

// Should return 6
addAll(1, 2, 3);

// Should return 10
addAll(1, 2, 3, 4);

幸運的是,javascript有一個arguments對象,可以來處理上述情況。 arguments物件是一個類別數組對象,想了解arguments物件的詳細情況請戳這裡,我們使用arguments物件來改變上例:

複製程式碼 程式碼如下:

function addAll () {
    var sum = 0;

    for (var i = 0; i         sum = arguments[i];
    }

    return sum;
}

// Returns 6
addAll(1, 2, 3);

// Returns 10
addAll(1, 2, 3, 4);

上面我們說過arguments物件是一個類別數組對象,下面我們來測試下:

複製程式碼 程式碼如下:

function getName() {
 console.log(Array.isArray(arguments));
}

//will output false
getName("benjamin");

上述檢驗結果可以看出:
它不是一個數組對象,那麼它和數組對像有什麼不同呢?詳情請戳這裡。

執行下面範例會拋出一個錯誤:

複製程式碼 程式碼如下:

function sortArgs () {
    // Uncaught TypeError: undefined is not a function
    sorted = arguments.sort()

    return sorted;
}
sortArgs();

我們可以像下面這樣把一個類別數組物件轉換為數組物件:

複製程式碼 程式碼如下:

function sortArgs () {
    // Convert arguments object into a real array
    var args = [].slice.call(arguments);

    // Now this will work!
    sorted = args.sort()

    return sorted;
}

//will output [1, 2, 3]
console.log(sortArgs(1,3,2));

如果你感覺這篇文章對你有幫助,希望轉給更多需要的人。文章不妥之處,歡迎留言斧正。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn