javascript中for in 和 for each in的区别

   javascript中for in 和 for each in的区别

        两个的作用都用来遍历对象,但为什么有了for in语句了还要for each in语句呢,后来看了下for each in开发的文档,for each in是作为E4X标准的一部分在javascript 1.6中发布的,而且它不是ECMAScript标准的一部分

  区别一:

  for in是javascript 1.0 中发布的。

  for each in是作为E4X标准的一部分在javascript 1.6中发布的,而它不是ECMAScript标准的一部分。

  这将意味着存在各种浏览器的兼容性问题。for each in,对很多浏览器都不支持的。例如是不支持IE6,IE7,IE8等浏览器的。

  区别二:

  例: var 长方形= { 高:"15", 宽:"25" };

  ?

1
2
3

for (var i in 长方形){
alert( i + "," + 长方形[i] );
}

  结果依次是: 高,15 ; 宽,25 ;

  ?

1
2
3

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在很多低版本的浏览器是不支持。

  以上所述就是本文的全部内容了,希望大家能够喜欢

时间: 2024-09-17 04:54:20

javascript中for in 和 for each in的区别的相关文章

面向对象-javascript中这两种对象属性有什么区别?

问题描述 javascript中这两种对象属性有什么区别? 第一种:function aaa(){} aaa.a=111; 第二种:function bbb(){} bbb.prototype.b=111; 我在csdn问过第一种,大部分人说属于面向对象的范畴. 但是我看了几篇js面向对象博客,都是用第二种原型的方式: 所以想知道这两种给对象添加属性的行为,在实际应用中有什么区别? 解决方案 如果把aaa,bbb作为方法来看,这两者没有区别. 如果把aaa,bbb作为类来看,那有区别. aaa.

在javascript中关于submit和button提交表单区别

原文:在javascript中关于submit和button提交表单区别   原文来自:http://www.jb51.net/article/42236.htm   submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上.        1. 如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成butto

javascript中apply、call和bind的使用区别_基础知识

在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢. 在说区别之前还是先总结一下三者的相似之处: 1.都是用来改变函数的this对象的指向的. 2.第一个参数都是this要指向的对象. 3.都可以利用后续参数传参. 那么他们的区别在哪里的,先看一个例子. var xw = { name : "小王", gender : "男", age : 24, say : function() { alert(this.name + " ,

JavaScript中style.left与offsetLeft的使用及区别详解_javascript技巧

如果父div的position定义为relative,子div的position定义为absolute,那么子div的style.left的值是相对于父div的值,这同offsetLeft是相同的,区别在于: 1. style.left 返回的是字符串,如28px,offsetLeft返回的是数值28,如果需要对取得的值进行计算,还用offsetLeft比较方便. 2. style.left是读写的,offsetLeft是只读的,所以要改变div的位置,只能修改style.left. 3. st

浅谈javascript中for in 和 for each in的区别

  区别一: 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 +

浅谈javascript中for in 和 for each in的区别_javascript技巧

区别一:         for in是javascript 1.0 中发布的.         for each in是作为E4X标准的一部分在javascript 1.6中发布的,而它不是ECMAScript标准的一部分.         这将意味着存在各种浏览器的兼容性问题.for each in,对很多浏览器都不支持的.例如是不支持IE6,IE7,IE8等浏览器的. 区别二:     例:  var 长方形= {  高:"15",  宽:"25"  }; f

JavaScript中apply与call的用法意义及区别说明_javascript技巧

apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别: Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2-]]); 从函数原型可以看到,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,这就实现了将函数作为另外一个对象的方法运行的目的.两个方法除了thisArg参数,都是为Funct

javascript中apply和call方法的作用及区别说明_javascript技巧

一.call和apply的说明 1.call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了,这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同. 2.语法:foo.call(this, arg1,arg2,arg3) == foo.apply(this,

关于JavaScript中apply与call的用法意义及区别

JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 参数thisObj可选项.将被用作当前对象的对象. arg1, arg2,  , argN可选项.将被传递方法参数序列. 说明call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从