------------ 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 傳入引數不合法...