浅谈javascript中for in 和 for each in的区别
区别一:
forin是javascript1.0中发布的。
foreachin是作为E4X标准的一部分在javascript1.6中发布的,而它不是ECMAScript标准的一部分。
这将意味着存在各种浏览器的兼容性问题。foreachin,对很多浏览器都不支持的。例如是不支持IE6,IE7,IE8等浏览器的。
区别二:
例: var长方形={ 高:"15", 宽:"25" };
for(variin长方形){ alert(i+","+长方形[i]); }
结果依次是: 高,15 ; 宽,25;
foreach(variin长方形){ alert(i+","+长方形[i]); }
结果依次是:15,undefined; 25,undefined;
两种遍历方法的变量i的值是不一样的,foreachin无法获得对象的属性名,只能获取到属性值。
最后总结一下使用建议:
(1)遍历普通数组,建议使用原生的遍历方法for,不要贪图方便,因为forin和foreachin均存在浏览器的兼容问题,不能保证它们对数组的遍历顺序(如果对顺序的不作要求的话,可以使用forin,但本人不建议),有兴趣话,可以阅读的下一篇文章《关于js中forin的缺陷浅析》。
(2)遍历对象,由于for没办法提供理想的遍历,因而只能选择其他方法。这里建议使用forin,从上面讲解的区别,forin比foreach更具优势,forin能获取索引和属性值,而foreach只能获取属性值,而且foreach在很多低版本的浏览器是不支持。
以上所述就是本文的全部内容了,希望大家能够喜欢