区别一:

  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 ,但本人不建议)

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

浅析for in 和for的区别的更多相关文章

  1. 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...

  2. 浅析Apache/Tomcat/JBOSS/Nginx之区别

    浅析Apache/Tomcat/JBOSS/Nginx服务器之区别 一.Apache和Tomcat的区别 Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上, ...

  3. 菜鸟浅析JAVA,.NET,C/C++的区别

    前言 以前经常看一些文章说到JAVA,.NET的区别,有时候C++er也会过来 凑凑热闹,突然发现这几天手停不下来了,也想写一篇文章 来分析一下 JAVA,.NET,C/C++的优缺点以及他们之间谁“ ...

  4. 浅析CentOS和RedHat Linux的区别

    CentOS的简介 CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是Linux操作系统的一个发行 ...

  5. 浅析CentOS和RedHat Linux的区别(转)

    CentOS的简介 CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是Linux操作系统的一个发行 ...

  6. 浅析mybatis中${}和#{}取值区别

    mybatis作为一个轻量级的ORM框架,应用广泛,其上手使用也比较简单:一个成熟的框架,必然有精巧的设计,值得学习. 在使用mybatis框架时,在sql语句中获取传入的参数有如下两种方式: ${p ...

  7. 浅析C# new和override的区别

    C#中new和override是继承中经常用到的两个关键字,但是往往有时候容易把这两个关键字的作用搞混淆. new C# new关键字表示隐藏,是指加上new关键字的属性或函数将对本类和继承类隐藏基类 ...

  8. 浅析_tmain() 与 main() 函数的区别

    _tmain()是为了支持Unicode所使用的main的一个别名,既然是别名,应该有宏定义过的,在<stdafx.h>里 #include <stdio.h> #indlud ...

  9. C# new和override的区别

    浅析C# new和override的区别 C#中new和override是继承中经常用到的两个关键字,但是往往有时候容易把这两个关键字的作用搞混淆. new C# new关键字表示隐藏,是指加上new ...

随机推荐

  1. 旅图——UI测试

    测试目标 保证代码质量,确保基础功能的实现,可以有效地保证代码的可靠性,让模块在与别的模块整合时出现更少的错误,减少最终测试时查找困难无方向. UI测试 登录过程 模拟登录过程,密码正确与密码错误的情 ...

  2. ThreadPoolExecutor机制

    一.概述 1.ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务: 2.Execu ...

  3. JS-事件之鼠标、键盘都能控制的下拉选框效果

    <script type="text/javascript"> window.onload=function(e){ var box=document.getEleme ...

  4. 什么是jsonp

    Jsonp其实就是一个跨域解决方案. Js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的. 所以可以把要请求的数据封装成一个js语句,做一个方法的调用. 跨域请求js脚本可以得到此脚本.得到 ...

  5. SQL 字段保留下划线后部分

    select  SUBSTRING(b.SUMMARY,0,charindex('_',b.SUMMARY))as SUMMARY  from UltimusDB.dbo.INCIDENTS b

  6. WSADATA

    中文名 WSADATA 操作系统 Windows CE 版本: 大于等于1.0 定义位置: Winsock.h 目录 1 说明 2 结构原型 3 参数说明 4 备注 说明编辑 WSADATA结构被用来 ...

  7. 为什么可以用while(cin)?

    为什么可以用while(cin)?   /** * @brief The quick-and-easy status check. * * This allows you to write const ...

  8. js基本数据类型和typeof

    JavaScript数据类型是非常简洁的,它只定义了6中基本数据类型 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有赋值时会显 ...

  9. autofac + owin + webform + mvc + webapi集成demo

    http://git.oschina.net/shiningrise/AutofacOwinDemo using Microsoft.Owin; using Owin; using System.We ...

  10. Autofac.Integration.Mvc分析

    Autofac.Integration.Mvc static ILifetimeScope LifetimeScope { get { return (ILifetimeScope)HttpConte ...