浅谈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 相关文章推荐
批量实现面向对象的实例代码
Jul 01 Javascript
js中符号转意问题示例探讨
Aug 19 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
Feb 28 Javascript
使用纯javascript实现经典扫雷游戏
Apr 23 Javascript
详解AngularJS中的作用域
Jun 17 Javascript
jQuery的end()方法使用详解
Jul 15 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
前端自动化开发之Node.js的环境搭建教程
Apr 01 Javascript
Vue 2.0的数据依赖实现原理代码简析
Jul 10 Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 Javascript
小程序从手动埋点到自动埋点的实现方法
Jan 24 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
PHP中文编码小技巧
2014/12/25 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
用Python写的图片蜘蛛人代码
2012/08/27 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
Python整数对象实现原理详解
2019/07/01 Python
Python各种扩展名区别点整理
2020/02/27 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
介绍一下EJB的体系结构
2012/08/01 面试题
小区门卫工作职责
2013/12/14 职场文书
党员个人思想汇报
2013/12/28 职场文书
运动会稿件100字
2014/02/21 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
见义勇为事迹材料
2014/12/24 职场文书
python库sklearn常用操作
2021/08/23 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android