淺談javascript中for in 和 for each in的區(qū)別
區(qū)別一:
for in是javascript 1.0 中發(fā)布的。
for each in是作為E4X標(biāo)準(zhǔn)的一部分在javascript 1.6中發(fā)布的,而它不是ECMAScript標(biāo)準(zhǔn)的一部分。
這將意味著存在各種瀏覽器的兼容性問(wèn)題。for each in,對(duì)很多瀏覽器都不支持的。例如是不支持IE6,IE7,IE8等瀏覽器的。
區(qū)別二:
例: var 長(zhǎng)方形= { 高:"15", 寬:"25" };
for (var i in 長(zhǎng)方形){ alert( i + "," + 長(zhǎng)方形[i] ); }
結(jié)果依次是: 高,15 ; 寬,25 ;
for each (var i in 長(zhǎng)方形){ alert( i + "," + 長(zhǎng)方形[i] ); }
結(jié)果依次是: 15, undefined ; 25, undefined;
兩種遍歷方法的變量i的值是不一樣的,for each in無(wú)法獲得對(duì)象的屬性名,只能獲取到屬性值。
最后總結(jié)一下使用建議:
(1)遍歷普通數(shù)組,建議使用原生的遍歷方法for,不要貪圖方便,因?yàn)閒or in 和for each in均存在瀏覽器的兼容問(wèn)題,不能保證它們對(duì)數(shù)組的遍歷順序(如果對(duì)順序的不作要求的話,可以使用for in ,但本人不建議),有興趣話,可以閱讀的下一篇文章《關(guān)于js中for in的缺陷淺析》。
(2)遍歷對(duì)象,由于for沒(méi)辦法提供理想的遍歷,因而只能選擇其他方法。這里建議使用for in ,從上面講解的區(qū)別,for in比f(wàn)or each 更具優(yōu)勢(shì),for in能獲取索引和屬性值,而for each只能獲取屬性值,而且for each在很多低版本的瀏覽器是不支持。
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡
相關(guān)文章
JavaScript實(shí)現(xiàn)前端實(shí)時(shí)搜索功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)前端實(shí)時(shí)搜索功能 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04解決Js先觸發(fā)失去焦點(diǎn)事件再執(zhí)行點(diǎn)擊事件的問(wèn)題
今天小編就為大家分享一篇解決Js先觸發(fā)失去焦點(diǎn)事件再執(zhí)行點(diǎn)擊事件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Js注冊(cè)協(xié)議倒計(jì)時(shí)的小例子
Js注冊(cè)協(xié)議倒計(jì)時(shí)的小例子,需要的朋友可以參考一下2013-06-06webpack如何自動(dòng)生成網(wǎng)站圖標(biāo)詳解
這篇文章主要給大家介紹了關(guān)于webpack如何自動(dòng)生成網(wǎng)站圖標(biāo)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01解決bootstrap中下拉菜單點(diǎn)擊后不關(guān)閉的問(wèn)題
今天小編就為大家分享一篇解決bootstrap中下拉菜單點(diǎn)擊后不關(guān)閉的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08