細解arguments物件

2021-08-20 04:28:52 字數 1133 閱讀 6260

函式內部的arguments物件到底是什麼?難道就是簡單的接收函式引數的物件嗎?

在這些問題中,開始了重新對arguments的重新學習。

arguments物件是所有(非箭頭)函式中都可用的區域性變數。你可以使用arguments物件在函式中引用函式的引數。此物件包含傳遞給函式的每個引數的條目,第乙個條目的索引從0開始。如下**:

function

test

()

test(1,2,3) // return

1、為什麼要轉為陣列?

2、如何轉?

function

reset1

() return reset;

}

function

reset2

()

遇到的疑問,arguments物件不是陣列,為什麼可以用陣列的splice方法進行轉換。進行了第乙個測試,第一次直接用替代arguments

array.prototype.splice.call(,0); // retuurn
開始下一步測試,開始對比arguments物件與陣列物件的相同點,之後發兩者都有乙個length屬性,並且屬性名都是從0-n,將上面用到的arguments物件修改為:,以及測試過了,如果給該物件屬性名修改為其他,則不會轉換成功。

array.prototype.splice.call(,0); // retuurn [ 1, 2, 3 ]
得出了結論:array.prototype.splice 方法是可以轉換 有length屬性的物件,所以可以裝換arguments物件為陣列。

1.arguments.callee屬性

指向當前執行的函式。

function

test

()

2.arguments.caller(已廢除)

指向呼叫當前函式的函式。如果無,則返回undefined

function

test

() function

ff()

ff()

使用 arguments 物件

arguments 物件表示引數集合,它是乙個偽類陣列,擁有與陣列相似的結構,可以通過陣列下標的形式訪問函式實參值,但是沒有基礎 array 的原型方法。函式沒有定義形參,但是在函式體內通過 arguments 物件可以獲取傳遞給該函式的每個實參值。function f f 3,3,6 逐個顯示每個...

簡單了解arguments物件

arguments物件是所有 非箭頭 函式中都可用的區域性變數,此物件包含傳遞給函式的每個引數。arguments類似array,但不是乙個array例項,除了length屬性和索引元素之外沒有任何array屬性。arguments物件的長度由實參 實際呼叫的引數 而不是形參 正式宣告接受的引數 決...

arguments類陣列物件

ecmascript中的所有引數傳遞的都是值,不可能通過引用傳遞引數。js函式沒有真正意義上的過載。在函式內部有兩個特殊的物件 arguments和this。當函式被呼叫時,傳入的引數將儲存在arguments類陣列物件中,通過arguments可以訪問所有該函式被呼叫時傳遞給它的引數列表。argu...