DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> Javascript中arguments對象詳解
Javascript中arguments對象詳解
編輯:JavaScript基礎知識     

在上篇文章中我們討論了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 < arguments.length; 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));

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

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved