簡單了解arguments物件

2021-10-05 04:21:02 字數 994 閱讀 6298

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物件在函式中引用函式的引數。此物件包含傳遞給函式的每個引數的條目,第乙個...