js中的for in和for each in的用法和区分

区分一:

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在许多低版本的浏览器是不支撑。

    原文作者:xyy_sun
    原文地址: https://segmentfault.com/a/1190000008860889
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞