浅谈javascript中for in 和 for each in的区别


Posted in Javascript onApril 23, 2015

区别一:

        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 ,但本人不建议),有兴趣话,可以阅读的下一篇文章《关于js中for in的缺陷浅析》。

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

以上所述就是本文的全部内容了,希望大家能够喜欢

Javascript 相关文章推荐
你必须知道的Javascript知识点之"深入理解作用域链"的介绍
Apr 23 Javascript
使用js实现雪花飘落效果
Aug 26 Javascript
node+express+jade制作简单网站指南
Nov 26 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
JS实现从网页顶部掉下弹出层效果的方法
Aug 06 Javascript
浅谈JS原生Ajax,GET和POST
Jun 08 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
jQuery导航条固定定位效果实例代码
May 26 jQuery
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
浅谈在node.js进入文件目录的问题
May 13 Javascript
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
原生js和jquery实现图片轮播特效
Apr 23 #Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 #Javascript
jQuery图片特效插件Revealing实现拉伸放大
Apr 22 #Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 #Javascript
javascript解三阶幻方(九宫格)
Apr 22 #Javascript
javascript递归回溯法解八皇后问题
Apr 22 #Javascript
使用C++为node.js写扩展模块
Apr 22 #Javascript
You might like
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
javascript基础知识讲解
2017/01/11 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
Python语言描述随机梯度下降法
2018/01/04 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
法制宣传口号
2014/06/16 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
先进单位事迹材料
2014/12/25 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers