arguments 物件 (Javascript)
You cannot explicitly create an arguments object.The arguments object only becomes available when a function begins execution.The arguments object only becomes available when a function begins execution.The arguments object of the function is not an array, but the individual arguments are accessed the same way array elements are accessed.The index n is actually a reference to one of the On properties of the arguments object
歸納出 2 個重點
- 無法明確建立這個 arguments 物件, 只有在函式執行時才可使用這個物件.
- 它是一個物件 (Object) 但不是陣列 (Array), 但它確保有 length 屬性.
舉一個簡單範例, 使用迴圈可以很輕鬆的拿到傳入的引數.
範例連結 |
知道如何使用 arguments 物件去取得我們需要的引數就可以開始做變化了,
想像我們需要一個函式功能是把所有數字加總算出總和.
範例連結 |
寫了一個 function 定義了一個參數專門處理 Array,
但是這樣的函式卻不能處理一個參數以上的需求.
讓我們來使用 arguments 來改寫這個函式.
範例連結 |
改寫完後可以處理多個參數的情況了,
但是反而沒辦法處理只傳單一 Array 的情況.
要如何去保有這 2 個功能呢?
我們可以使用參數固定的版本去實作參數可變的版本.
範例連結 |
當然這也可以延伸使用 apply 或 call 方法做到可變參數的效果.
請看下面的範例.
範例連結 |
不過含有 apply 的程式碼可能比較不容易閱讀,
也常會帶來效能上的成本.
所以建議提供可變參數函式時, 也請提拱參數固定的版本, 如此用戶才不需要使用 apply 方法.
沒有留言:
張貼留言