JS arguments對象

最近開始學習JS, 因爲東西太多,而且比較繁瑣。所以把自己的學習心得記錄在這裏,可以加深一下印象。

今天接觸到了JS的arguments對象。查閱了一些資料,現在總結一下。


arguments對象是JS的內置對象,不能顯式的進行創建。是Array-like(類似於數組)對象,是函數的參數組成的對象。可以通過數組形式訪問arguments對象的值。

arguments[0],arguments[1],...

也可以通過這種形式爲arguments賦值,

arguments[0] = 'arg0';arguments[1] = 'arg1';...

arguments 對象類似於數組,但不是數組,arguments只有一個數組的屬性--length;

arguments.length 表示函數參數的長度, 及參數的個數。

arguments可以轉化成數組(三種方式):

var args = Array.prototype.slice.call(arguments);    //對象冒充

var args = Array.from(arguments);                         //Array.from方法

var arguments = [...arguments];        //spread syntax , 詳情請見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator


既然講到了函數參數, 我們就來研究一下函數的參數形式。

Javascript中函數參數分爲顯式參數跟隱式參數。顯式參數在函數定義式列出。例如

functionName (parameter1,parameter2, parameter3) {

  //代碼塊

}     //當中的parameter1,parameter2, parameter3  即爲顯式參數

而隱式參數(arguments)是在函數調用是傳遞給函數的真正的值。

函數在調用時如果缺少參數,參數會默認設置爲:undefined.

如果函數調用時設置了過多的參數,參數將無法被引用,因爲無法找到對應的參數名。只能使用 arguments 對象來調用。

既然arguments是函數參數組成的類似於數組的對象,那麼我們當然通過arguments來獲取函數的參數。

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
    var i, max = 0;
    for (i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;

}

arguments常用的屬性:

1.arguments.callee     Reference to the currently executing function

2.arguments.length    Reference to the number of arguments passed to the function


舉一個例子,來自MDN

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);        //這裏的參數1,表示從arguments[1]開始取值
  return args.join(separator);
}

// returns "...., orange, blue"
myConcat(", ", "....", "orange", "blue");

// returns "elephant; giraffe; lion; cheetah"
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");

// returns "sage. basil. oregano. pepper. parsley"
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");


到這裏,對arguments對象應該有一個初步的瞭解了。

在CSDN寫的第一篇日誌,棒棒噠,給自己鼓個掌。害羞







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章