首頁 >web前端 >js教程 >Javascript函數中的arguments(圖文教學)

Javascript函數中的arguments(圖文教學)

亚连
亚连原創
2018-05-19 11:41:511261瀏覽

在JavaScript中,arguments物件是比較特別的一個對象,實際上是目前函數的內建屬性。以下這篇文章主要介紹了關於Javascript函數中的arguments面貌以及如何轉換為數組的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。

一、arguments的面貌

在javascript中所有的函數內部都包含了一個隱藏的變數叫arguments;它存放著所有傳遞到這個函數中的參數;

那麼我們打開實例看看arguments的輸出形式

(function fn(){
 console.log(arguments)
})(1,2,3,4)

##結果好像是類似數組的形式印在控制台,相信大多數人包括我看到這種輸出就會認為arguments是一個數組,那麼既然是數組就可以用數組的一些方法了吧,再看下一個例子;

(function fn(){
 arguments.push(5)
 console.log(arguments)
})(1,2,3,4)

結果報錯了- -! ;(在專案中我就是踩到了這個坑);

那我們就會有一個疑惑了,既然是數組為什麼不能用push方法呢,其他的像pop,slice也不行麼,是的,都不行,雖然arguments也能通過下標的形式獲取到對應位置的參數,當本質上不算是真正的數組;

我們通過instanceof打印看看它是不是Array的孩子

(function fn(){
 console.log(arguments instanceof Array)
})()

果不其然真不是數組,那麼我們就會聯想到它就是個物件了;

雖然它也能用for循環遍歷到裡面的參數,但把它轉為真正的陣列才是更好的選擇;

#二、轉換成陣列

轉換的方法有很多,物件冒充的方式傳遞給Array.prototype或遍歷push到空數組或傳遞給另一個函數等等。 。都可以完成,以下簡單介紹幾個轉換的方法,遍歷push到空數組的方法就不細講了;

第一種方法:

(function fn(){
 var arr = Array.prototype.slice.call(arguments)
 arr.push(5)
 console.log(arr)
})(1,2,3,4)

這種轉換方式比較慢,在效能不好的情況下不推薦這種寫法;

第二種方法:

function fn() {
 fnArr.apply(null, arguments);
}
function fnArr(a,b,c,d) {
 ···
}

上面是我整理給大家的,希望未來會對大家有幫助。

相關文章:

JS取得url參數並發送json格式POST步驟詳解

##js實作前後台互相傳遞Json程式碼

#$http服務Post方法傳遞

json參數案例詳解

以上是Javascript函數中的arguments(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn