资讯专栏INFORMATION COLUMN

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

Blackjun / 1752人阅读

摘要:区别一是中发布的。是作为标准的一部分在中发布的,而它不是标准的一部分。这将意味着存在各种浏览器的兼容性问题。遍历对象,由于没办法提供理想的遍历,因而只能选择其他方法。

区别一:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82248.html

相关文章

  • [译]Loadtest库做负载测试

    摘要:在选定的或者上进行负载测试,允许在你自己的测试里轻松集成。使用提供的非常容易整合到你的包里进行编程负载测试。在部署新版本软件之前,使运行负载测试成为系统测试的一部分变得非常容易。 前言 因为最近学习需要用到一些测试库测试性能,但是工具又太复杂不好用,恰好发现有这么一个库用法输出都很近似,可惜没有找到有中文版或者用法笔记,所以只好耐心一点一点翻译出来。因为我的英文水平很一般,而这种技术博...

    asoren 评论0 收藏0
  • Zepto这样操作元素属性

    摘要:还有一点需要注意的是方法设置或者获取都是在操作元素的属性,那它和,的区别在哪呢可以查看设置设置与的设置部分比较类似,既支持直接传入普通的字符串也支持传入回调函数。 前言 使用Zepto的时候,我们经常会要去操作一些DOM的属性,或元素本身的固有属性或自定义属性等。比如常见的有attr(),removeAttr(),prop(),removeProp(),data()等。接下来我们挨个整...

    付伦 评论0 收藏0
  • template7入门教程及对它一些看法

    摘要:是的内置模板引擎,在此之前使用过,不过刚刚打开看了下,已经停止更新,并且将要被所替代。如果需要进行一些条件判断,则使用。我们就主要说一下不常用的或者其他模板引擎里没有的一些功能。 template7是framework7的内置模板引擎,在此之前使用过jquery-tmpl,不过刚刚打开github看了下,已经停止更新,并且将要被JsRender所替代。妹的,JsRender又是什么鬼啊...

    Developer 评论0 收藏0
  • template7入门教程及对它一些看法

    摘要:是的内置模板引擎,在此之前使用过,不过刚刚打开看了下,已经停止更新,并且将要被所替代。如果需要进行一些条件判断,则使用。我们就主要说一下不常用的或者其他模板引擎里没有的一些功能。 template7是framework7的内置模板引擎,在此之前使用过jquery-tmpl,不过刚刚打开github看了下,已经停止更新,并且将要被JsRender所替代。妹的,JsRender又是什么鬼啊...

    kaka 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<