您好,登錄后才能下訂單哦!
本篇文章為大家展示了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) { ··· }
上述內容就是Javascript函數中arguments的作用是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。