最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單談?wù)凧avascript函數(shù)中的arguments

 更新時(shí)間:2017年02月09日 12:03:04   作者:RABBIT  
在JavaScript中,arguments對(duì)象是比較特別的一個(gè)對(duì)象,實(shí)際上是當(dāng)前函數(shù)的一個(gè)內(nèi)置屬性。下面這篇文章主要介紹了關(guān)于Javascript函數(shù)中的arguments面貌以及如何轉(zhuǎn)化為數(shù)組的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

一、arguments的面貌

在javascript中所有的函數(shù)內(nèi)部都包含了一個(gè)隱藏的變量叫arguments;它存放著所有傳遞到這個(gè)函數(shù)中的參數(shù);

那么我們打開實(shí)例看看arguments的輸出形式

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

結(jié)果好像是類似數(shù)組的形式打印在控制臺(tái),相信大多數(shù)人包括我看到這種輸出就會(huì)認(rèn)為arguments是一個(gè)數(shù)組,那么既然是數(shù)組就可以用數(shù)組的一些方法了吧,再看下一個(gè)例子;

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

結(jié)果報(bào)錯(cuò)了- -??;(在項(xiàng)目中我就是踩到了這個(gè)坑);

那我們就會(huì)有一個(gè)疑惑了,既然是數(shù)組為什么不能用push方法呢,其他的像pop,slice也不行么,是的,都不行,雖然arguments也能通過下標(biāo)的形式獲取到對(duì)應(yīng)位置的參數(shù),當(dāng)本質(zhì)上不算是真正的數(shù)組;

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

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

果不其然真不是數(shù)組,那么我們就會(huì)聯(lián)想到它就是個(gè)對(duì)象了;

雖然它也能用for循環(huán)遍歷到里面的參數(shù),但把它轉(zhuǎn)為真正的數(shù)組才是更好的選擇;

二、轉(zhuǎn)化為數(shù)組

轉(zhuǎn)化的方法有很多,對(duì)象冒充的方式傳遞給Array.prototype或遍歷push到空數(shù)組或傳遞給另一個(gè)函數(shù)等等。。都可以完成,下面簡(jiǎn)單介紹幾個(gè)轉(zhuǎn)化的方法,遍歷push到空數(shù)組的方法就不細(xì)講了;

第一種方法:

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

這種轉(zhuǎn)化方式比較慢,在性能不好的情況下不推薦這種寫法;

第二種方法:

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

個(gè)人推薦這種做法;

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,雖然寫的不多,但還是希望大家能在項(xiàng)目的過程當(dāng)中不要誤踩了arguments的坑,希望本文能對(duì)大家有所幫助。

相關(guān)文章

最新評(píng)論

军事| 剑川县| 华蓥市| 乐清市| 德格县| 兴海县| 宁都县| 通海县| 罗城| 蛟河市| 沛县| 汝阳县| 东辽县| 西贡区| 乌拉特中旗| 商南县| 黔东| 伽师县| 大姚县| 含山县| 沁源县| 雅江县| 新蔡县| 阳春市| 荆门市| 咸宁市| 汶上县| 句容市| 南皮县| 镇远县| 田阳县| 缙云县| 芷江| 皮山县| 黄平县| 鄂尔多斯市| 合山市| 唐山市| 龙州县| 卢龙县| 兰西县|