函式內部的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...