浅谈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中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
Oct 18 Javascript
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
Jun 24 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
Jan 27 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
jQuery实现的漂亮表单效果代码
Aug 18 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
如何解决vue与传统jquery插件冲突
Mar 20 Javascript
ionic实现下拉刷新载入数据功能
May 11 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
Angular value与ngValue区别详解
Nov 27 Javascript
javascript代码实现简易计算器
Jan 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
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
yii操作cookie实例简介
2014/07/09 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP面向对象之后期静态绑定功能介绍
2015/05/18 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
vue登录注册及token验证实现代码
2017/12/14 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
python中子类继承父类的__init__方法实例
2016/12/15 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
保密工作整改情况汇报
2014/11/06 职场文书
个人总结格式范文
2015/03/09 职场文书
年会主持人开场白台词
2015/05/29 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
Golang生成Excel文档的方法步骤
2021/06/09 Golang
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
Windows7下FTP搭建图文教程
2022/08/05 Servers