一、Arguments是什麼?
Arguments是JavaScript裡函數的參數列表,每個函數(箭頭函數除外)都有這麼一個特別的變量用來表示所有傳遞到這個函數中參數。看一段代碼,可以發現arguments像一個數組把參數列出來。
二、Arguments有以下幾個特點
1、參數是值傳遞,但它跟參數是引用關係
a) 首先JS參數是值傳遞,從以下代碼可以看出變量重新賦值以後並不會影響之前的變量
b) 參數與arguments對象成員與對應參數是引用關係,修改會影響彼此
2、通過arguments可以獲得函數自身以及調用者
3、 Arguments對象不是一個 Array,它類似於Array,它除了length屬性和可以索引元素之外沒有任何Array的方法。比如push,pop,forEach等。
可以將arguments方便地轉換為數組
4、 箭頭函數中沒有arguments
5、 默認參數和不定參數rest,對於這種會開闢新的作用域,修改後互不影響
總結
以上就是關於arguments的介紹,arguments確實很有用,可以幫助我們實現類似函數重載的功能,也可以不用一開始就把形參明確,更可以把arguments往下傳遞。但要注意的是,因為arguments與參數是引用關係,做修改時最好先轉化為數組,以便引起誤會。同時callee與caller也易引起混淆,且效率不高,是不建議使用的,最好是利用不定參數rest來替代arguments,在使用不定參數和默認參數值時記住會開闢新的作用域出來。
關鍵字: 傳遞 作用域 JavaScript