區別一:javascript
for in是javascript 1.0 中發佈的。 for each in是做爲E4X標準的一部分在javascript 1.6中發佈的,而它不是ECMAScript標準的一部分。 這將意味着存在各類瀏覽器的兼容性問題。for each in,對不少瀏覽器都不支持的。例如是不支持IE6,IE7,IE8等瀏覽器的。
區別二:java
例: var 長方形= { 高:"15", 寬:"25" };數組
for (var i in 長方形){瀏覽器
alert( i + "," + 長方形[i] );
}
結果依次是: 高,15 ; 寬,25 ;code
for each (var i in 長方形){對象
alert( i + "," + 長方形[i] );
}
結果依次是: 15, undefined ; 25, undefined;索引
兩種遍歷方法的變量i的值是不同的,for each in沒法得到對象的屬性名,只能獲取到屬性值。ip
最後總結一下使用建議:變量
(1)遍歷普通數組,建議使用原生的遍歷方法for,不要貪圖方便,由於for in 和for each in均存在瀏覽器的兼容問題,不能保證它們對數組的遍歷順序(若是對順序的不做要求的話,能夠使用for in ,但本人不建議),有興趣話,能夠閱讀的下一篇文章《for in 的瀏覽器兼容問題》。兼容性
(2)遍歷對象,因爲for沒辦法提供理想的遍歷,於是只能選擇其餘方法。這裏建議使用for in ,從上面講解的區別,for in比for each 更具優點,for in能獲取索引和屬性值,而for each只能獲取屬性值,並且for each在不少低版本的瀏覽器是不支持。