浅谈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 相关文章推荐
js中eval()函数和trim()去掉字符串左右空格应用
Feb 02 Javascript
深入理解jQuery中live与bind方法的区别
Dec 18 Javascript
jquery实现在光标位置插入内容的方法
Feb 05 Javascript
jquery动态添加删除(tr/td)
Feb 09 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
javascript搜索框效果实现方法
May 14 Javascript
JS中parseInt()和map()用法分析
Dec 16 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
jQuery Plupload上传插件的使用
Apr 19 jQuery
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
使用vux实现上拉刷新功能遇到的坑
Feb 08 Javascript
vue实现动态表格提交参数动态生成控件的操作
Nov 09 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中关于foreach使用引用变量的坑
2016/11/14 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
Angular.JS中的this指向详解
2017/05/17 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
JS设计模式之惰性模式(二)
2017/09/29 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
如何基于python操作excel并获取内容
2019/12/24 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
考试作弊检讨书大全
2014/02/18 职场文书
党的作风建设心得体会
2014/10/22 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
java实现面板之间切换功能
2022/06/10 Java/Android