arguments物件是所有(非箭頭)函式中都可用的區域性變數,此物件包含傳遞給函式的每個引數。arguments類似array,但不是乙個array例項,除了length屬性和索引元素之外沒有任何array屬性。
arguments物件的長度由實參(實際呼叫的引數)而不是形參(正式宣告接受的引數)決定。形參是函式內部重新開闢記憶體空間儲存的變數,其與arguments物件記憶體空間不重疊。在arguments和形參都存在的情況下,兩者值是同步的,如果其中乙個無值,對該值的修改將不會同步。
function
fun(a, b, c)
fun(1,
2);
callee是arguments物件的乙個屬性。arguments.callee返回此arguments物件所在的當前函式引用。在使用函式遞迴呼叫時可以使用arguments.callee代替函式名本身。
// 階乘函式
function
factorial
(num)
else
}// 使用arguments.callee替換factorial
function
factorial
(num)
else
}
與函式名 factorial解耦之後不管引用函式時使用的是什麼名字,都可以保證正常完成遞迴呼叫。
注意:在嚴格模式下,第5版 ecmascript (es5) 禁止使用 arguments.callee()。當乙個函式必須呼叫自身的時候, 避免使用 arguments.callee(), 通過要麼給函式表示式乙個名字,要麼使用乙個函式宣告。
caller這個屬性儲存著呼叫當前函式的函式作用域,本屬性已被移除且不再有用,可以使用 function.caller。
function
whocalled()
functiona(
);a(
)
使用 arguments 物件
arguments 物件表示引數集合,它是乙個偽類陣列,擁有與陣列相似的結構,可以通過陣列下標的形式訪問函式實參值,但是沒有基礎 array 的原型方法。函式沒有定義形參,但是在函式體內通過 arguments 物件可以獲取傳遞給該函式的每個實參值。function f f 3,3,6 逐個顯示每個...
簡單了解物件導向
一,簡單說兩句,不喜歡省略 對學習物件導向的人的一點點建議,開始的時候老師說的很神奇,什麼物件導向,封裝,多型什麼什麼什麼什麼。我覺得這些完全是製造混亂狀態。程式設計就是方法,然後就是方法直接的呼叫,方法會用到傳值,把相似方法羅列起來,組裝起來,就是物件了。就好比一群零件,可能電池也對你有幫助,可能...
細解arguments物件
函式內部的arguments物件到底是什麼?難道就是簡單的接收函式引數的物件嗎?在這些問題中,開始了重新對arguments的重新學習。arguments物件是所有 非箭頭 函式中都可用的區域性變數。你可以使用arguments物件在函式中引用函式的引數。此物件包含傳遞給函式的每個引數的條目,第乙個...