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

转自这里:http://blog.sina.com.cn/s/blog_855dfd9e0101a2w0.html

区别一:

 
       forin是javascript 1.0 中发布的。
       for eachin是作为E4X标准的一部分在javascript1.6中发布的,而它不是ECMAScript标准的一部分。
      这将意味着存在各种浏览器的兼容性问题。for eachin,对很多浏览器都不支持的。例如是不支持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 eachin无法获得对象的属性名,只能获取到属性值。

   最后总结一下使用建议:

   (1)遍历普通数组,建议使用原生的遍历方法for,不要贪图方便,因为for in 和foreach in均存在浏览器的兼容问题,不能保证它们对数组的遍历顺序(如果对顺序的不作要求的话,可以使用for in,但本人不建议),有兴趣话,可以阅读的下一篇文章《for in 的浏览器兼容问题》。

   (2)遍历对象,由于for没办法提供理想的遍历,因而只能选择其他方法。这里建议使用for in,从上面讲解的区别,for in比for each 更具优势,for in能获取索引和属性值,而foreach只能获取属性值,而且for each在很多低版本的浏览器是不支持。

for in的兼容性探讨
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值