在函式內部,有兩個特殊的物件:arguments和this。
argument物件有乙個名叫callee的屬性,該屬性是乙個指標,指向擁有這個arguments物件的函式。請看下面這個非常經典的階乘函式。
functionfactorial(num)
else
}
這種寫法的問題在於函式的執行和函式名factorial緊緊耦合在一起。可以像下面這樣使用arguments.callee.
functionfactorial(num)
else
}
在這個重寫後的factorial()函式的函式體內,沒有再引用函式名factoria。這樣,無論引用函式時使用的是什麼名字,都可以保證正常完成遞迴呼叫。例如:
var truefactorial =factorial;factorial = function
() ;
alert(truefactorial(5)); //
120alert(factorial(5)); //
0
使用 arguments 物件
arguments 物件表示引數集合,它是乙個偽類陣列,擁有與陣列相似的結構,可以通過陣列下標的形式訪問函式實參值,但是沒有基礎 array 的原型方法。函式沒有定義形參,但是在函式體內通過 arguments 物件可以獲取傳遞給該函式的每個實參值。function f f 3,3,6 逐個顯示每個...
細解arguments物件
函式內部的arguments物件到底是什麼?難道就是簡單的接收函式引數的物件嗎?在這些問題中,開始了重新對arguments的重新學習。arguments物件是所有 非箭頭 函式中都可用的區域性變數。你可以使用arguments物件在函式中引用函式的引數。此物件包含傳遞給函式的每個引數的條目,第乙個...
簡單了解arguments物件
arguments物件是所有 非箭頭 函式中都可用的區域性變數,此物件包含傳遞給函式的每個引數。arguments類似array,但不是乙個array例項,除了length屬性和索引元素之外沒有任何array屬性。arguments物件的長度由實參 實際呼叫的引數 而不是形參 正式宣告接受的引數 決...