浅谈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 获取图片尺寸及放大图片
Sep 04 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
基于jQuery实现最基本的淡入淡出效果实例
Feb 02 Javascript
JavaScript使用cookie记录临时访客信息的方法
Apr 07 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
Oct 09 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
Sep 01 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
jQuery实现日历效果
Sep 11 jQuery
Vite + React从零开始搭建一个开源组件库
Jun 25 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
一个程序下载的管理程序(一)
2006/10/09 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
PHP守护进程实例
2015/03/06 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
python多线程扫描端口示例
2014/01/16 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python多线程扫描端口(线程池)
2019/09/04 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
Python流程控制语句的深入讲解
2020/06/15 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
出国留学介绍信
2014/01/13 职场文书
文明教师事迹材料
2014/01/16 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
毕业生应聘求职信
2014/07/10 职场文书
信访工作汇报材料
2014/10/27 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
任命通知范文
2015/04/21 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
七年级作文之冬景
2019/11/07 职场文书