区分一:
for in是javascript 1.0 中宣布的。
for each in是作为E4X规范的一部分在javascript 1.6中宣布的,而它不是ECMAScript规范的一部分。
这将意味着存在种种浏览器的兼容性问题。for each in,对许多浏览器都不支撑的。例如是不支撑IE6,IE7,IE8等浏览器的。
区分二:
例: var 长方形= { 高:”15″, 宽:”25″ };
for (var i in 长方形){
alert( i + "," + 长方形[i] );
}
效果依次是: 高,15 ; 宽,25 ;
for each (var i in 长方形){
alert( i + "," + 长方形[i] );
}
效果依次是: 15, undefined ; 25, undefined;
两种遍历要领的变量i的值是不一样的,for each in没法取得对象的属性名,只能猎取到属性值。
末了总结一下运用发起:
(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在许多低版本的浏览器是不支撑。