javascript數(shù)組遍歷for與for in區(qū)別詳解
js中遍歷數(shù)組的有兩種方式
var array=['a']
//標(biāo)準(zhǔn)的for循環(huán)
for(var i=1;i<array.length;i++){
alert(array[i])
}
//foreach循環(huán)
for(var i in array){
alert(array[i])
}
正常情況下上面兩種遍歷數(shù)組的方式結(jié)果一樣。首先說(shuō)兩者的第一個(gè)區(qū)別
標(biāo)準(zhǔn)的for循環(huán)中的i是number類型,表示的是數(shù)組的下標(biāo),但是foreach循環(huán)中的i表示的是數(shù)組的key是string類型,因?yàn)閖s中一切皆為對(duì)象。自己試試 alert(typeof i);這個(gè)區(qū)別是小問(wèn)題?,F(xiàn)在我加上如下代碼,上面的執(zhí)行結(jié)果就不一樣了。
//擴(kuò)展了js原生的Array
Array.prototype.test=function()
}
試試看上面的代碼執(zhí)行什么。我們發(fā)現(xiàn)標(biāo)準(zhǔn)的for循環(huán)任然真正的對(duì)數(shù)組循環(huán), 但是此時(shí)foreach循環(huán)對(duì)我剛才寫的test方法寫打印出來(lái)了。這就是for與foreach遍歷數(shù)組的最大區(qū)別,如果我們?cè)陧?xiàng)目采用的是用foreach遍歷數(shù)組,假設(shè)有一天誰(shuí)不小心自己為了擴(kuò)展js原生的Array類,或者引入一個(gè)外部的js框架也擴(kuò)展了原生Array。那問(wèn)題就來(lái)了。
再此建議兩點(diǎn)
1.不要用for in遍歷數(shù)組,全部統(tǒng)一采用標(biāo)準(zhǔn)的for循環(huán)變量數(shù)組(我們無(wú)法保證我們引入的js是否會(huì)采用prototype擴(kuò)展原生的Array)
2.如果要對(duì)js的原生類擴(kuò)展的時(shí)候,不要采用prototype了
相關(guān)文章
JS獲取指定月份的天數(shù)兩種實(shí)現(xiàn)方法
這篇文章主要介紹了JS獲取指定月份的天數(shù)兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2018-06-06
headjs實(shí)現(xiàn)網(wǎng)站并行加載但順序執(zhí)行JS
本文主要介紹如何使用head.js實(shí)現(xiàn)網(wǎng)站并行加載但順序執(zhí)行JS,提高網(wǎng)站加載速度。需要的朋友可以看下2016-11-11
微信小程序wx.request實(shí)現(xiàn)后臺(tái)數(shù)據(jù)交互功能分析
這篇文章主要介紹了微信小程序wx.request實(shí)現(xiàn)后臺(tái)數(shù)據(jù)交互功能,分析微信小程序wx.request在后臺(tái)數(shù)據(jù)交互過(guò)程中遇到的問(wèn)題與相關(guān)的解決方法,需要的朋友可以參考下2017-11-11
uniapp實(shí)現(xiàn)地圖點(diǎn)聚合功能的詳細(xì)教程
最近公司項(xiàng)目需求需要對(duì)設(shè)備在地圖上面進(jìn)行監(jiān)控,并在當(dāng)設(shè)備一定距離時(shí)進(jìn)行聚合,這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)地圖點(diǎn)聚合功能的相關(guān)資料,需要的朋友可以參考下2022-12-12
值得分享的輕量級(jí)Bootstrap Table表格插件
這篇文章為大家分享了輕量級(jí)Bootstrap Table表格插件,以表格的形式顯示的數(shù)據(jù),支持單選,復(fù)選框,排序,分頁(yè),顯示/隱藏列等操作,感興趣的小伙伴們可以參考一下2016-05-05
微信小程序使用audio組件播放音樂(lè)功能示例【附源碼下載】
這篇文章主要介紹了微信小程序使用audio組件播放音樂(lè)功能,結(jié)合實(shí)例形式分析了微信小程序audio組件播放在線音樂(lè)相關(guān)操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12
js 編碼轉(zhuǎn)換 gb2312 和 utf8 互轉(zhuǎn)的2種方法
這篇文章介紹了gb2312 和 utf8 互轉(zhuǎn)的JS方法,有需要的朋友可以參考一下2013-08-08
JS將所有對(duì)象s的屬性復(fù)制給對(duì)象r(原生js+jquery)
這篇文章主要介紹了js中將所有對(duì)象s的屬性復(fù)制給對(duì)象r的方法,原生js+jquery分別實(shí)現(xiàn)2014-01-01

