淺談javascript中for in 和 for each in的區(qū)別
區(qū)別一:
for in是javascript 1.0 中發(fā)布的。
for each in是作為E4X標準的一部分在javascript 1.6中發(fā)布的,而它不是ECMAScript標準的一部分。
這將意味著存在各種瀏覽器的兼容性問題。for each in,對很多瀏覽器都不支持的。例如是不支持IE6,IE7,IE8等瀏覽器的。
區(qū)別二:
例: var 長方形= { 高:"15", 寬:"25" };
for (var i in 長方形){ alert( i + "," + 長方形[i] ); }
結(jié)果依次是: 高,15 ; 寬,25 ;
for each (var i in 長方形){ alert( i + "," + 長方形[i] ); }
結(jié)果依次是: 15, undefined ; 25, undefined;
兩種遍歷方法的變量i的值是不一樣的,for each in無法獲得對象的屬性名,只能獲取到屬性值。
最后總結(jié)一下使用建議:
(1)遍歷普通數(shù)組,建議使用原生的遍歷方法for,不要貪圖方便,因為for in 和for each in均存在瀏覽器的兼容問題,不能保證它們對數(shù)組的遍歷順序(如果對順序的不作要求的話,可以使用for in ,但本人不建議),有興趣話,可以閱讀的下一篇文章《關于js中for in的缺陷淺析》。
(2)遍歷對象,由于for沒辦法提供理想的遍歷,因而只能選擇其他方法。這里建議使用for in ,從上面講解的區(qū)別,for in比for each 更具優(yōu)勢,for in能獲取索引和屬性值,而for each只能獲取屬性值,而且for each在很多低版本的瀏覽器是不支持。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡
相關文章
解決Js先觸發(fā)失去焦點事件再執(zhí)行點擊事件的問題
今天小編就為大家分享一篇解決Js先觸發(fā)失去焦點事件再執(zhí)行點擊事件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08