逆战javascript for in,for each,for循环遍历区别
1、for…in
以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
语法:
1
for (variable in object) {…}
参数:
variable
在每次迭代时,将不同的属性名分配给变量。
object
被迭代其枚举属性的对象。
for…in 不应该被用来迭代一个下标顺序很重要的 Array .
数组索引仅是可枚举的整数名,其他方面和别的普通对象属性没有什么区别。for…in 并不能够保证返回的是按一定顺序的索引,但是它会返回所有可枚举属性,包括非整数名称的和继承的。
例子
var obj = {a:1, b:2, c:3};
for (var prop in obj) {
console.log(“obj.” + prop + " = " + obj[prop]);
}
Output:
“obj.a = 1”
“obj.b = 2”
“obj.c = 3”
复制代码
复制代码
var triangle = {a:1, b:2, c:3};
function ColoredTriangle() {
this.color = “red”;
}
ColoredTriangle.prototype = triangle;
var obj = new ColoredTriangle();
for (var prop in obj) {
if( obj.hasOwnProperty( prop ) ) {
console.log(“o.” + prop + " = " + obj[prop]);
}
}
Output:
“o.color = red”
2、for each…in
使用一个变量迭代一个对象的所有属性值,对于每一个属性值,有一个指定的语句块被执行.
for each…in 是 ECMA-357 (E4X) 标准的一部分, 大部分非Mozilla浏览器都没有实现该标准, E4X并不是 ECMAScript 标准的一部分.
语法:
for each (variable in object) {
statement