arguments類陣列物件

2022-09-09 01:18:13 字數 1015 閱讀 1598

------------   ecmascript中的所有引數傳遞的都是值,不可能通過引用傳遞引數。

--------------------------js函式沒有真正意義上的過載。

在函式內部有兩個特殊的物件 : arguments和this。

當函式被呼叫時,傳入的引數將儲存在arguments類陣列物件中,

通過arguments可以訪問所有該函式被呼叫時傳遞給它的引數列表。

arguments並不是乙個真正的陣列,而是乙個「類似陣列(array-like)」的物件,因為

arguments擁有乙個length屬性,但它缺少所有的陣列方法。

通過arguments可以實現乙個add()函式,把傳入的引數進行加法運算並把值返回:

function add()

return sum;

}

雖然arguments的主要用途是儲存函式引數,但這個物件還有乙個callee屬性,該屬性是乙個指標,指向擁有這個arguments物件的函式。

使用該屬性可以實現乙個階乘函式:

function factorial(num) else

}

arguments[i]的值會與對應的命名引數的值保持同步。

function add(num1, num2)

add(2,2); // 12

執行add()函式會重寫第二個引數,將第二個引數的值改為10。  但修改命名引數的值不會影響到arguments中對應的值。

同時,arguments.length是由傳入的引數個數決定的,而不是由定義函式時的命名引數的個數決定的。

注意:在嚴格模式下,

像下面形式的函式,在嚴格模式下會報錯。

function factorial(num) else

}

解決方法:

var factorial = (function f(num)else

});

js 類陣列物件與arguments

類陣列物件是指擁有乙個length屬性和若干屬性的物件。arguments物件就是乙個類陣列物件。另外 常見的類陣列物件還包括 使用document.getelementsbytagname classname 等方法獲得的htmlcollection 使用queryselector獲得的nodel...

arguments物件,手寫陣列push方法

function computed computed 1,2,3 arguments 3 1,2,3,callee symbol symbol.iterator 0 1 1 2 2 3 length 3 callee computed symbol symbol.iterator values pr...

(三十六)類陣列物件arguments

在函式呼叫時,我們總能見到arguments這個物件,它具體是用來幹什麼的呢?感覺逼格非常高呢 function a a 1,2,3,4,5 可以看到列印結果位 function add else console.log add 2,3 5 console.log add 1,2,3 傳入引數不合法...