JavaScript里的循环方法forEach,for-in,for-of

版权声明: https://blog.csdn.net/xiasohuai/article/details/82184187

之前我们一直使用的for来循环一个数组的方法是这样的:

for (var index = 0; index < myArray.length; index++) {
  console.log(myArray[index]);
}

自从ES5起,我们开始可以使用内置的forEach方法:

myArray.forEach(function (value) {
  console.log(value);
});

forEach写法简单了许多,但也有短处:你不能中断循环(使用break语句或使用return语句

for in是ES5标准,遍历key. 
for of是ES6标准,遍历value.

for-in循环

JavaScript里还有一种循环方法:for-in。

for-in循环实际是为循环”enumerable(可枚举)“对象而设计的:

var obj = {a:1, b:2, c:3}; 
for (var prop in obj) {
  console.log("obj." + prop + " = " + obj[prop]);
}
// 输出:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

你也可以用它来循环一个数组:

for (var index in myArray) {    // 不推荐这样
  console.log(myArray[index]);
}

不推荐用for-in来循环一个数组,因为,不像对象,数组的index跟普通的对象属性不一样,是重要的数值序列指标。

for-of循环

JavaScript6里引入了一种新的循环方法,它就是for-of循环,它既比传统的for循环简洁,同时弥补了forEach和for-in循环的短板。

for (var value of myArray) {
  console.log(value);
}

for-of不能循环对象

因为能够被for...of正常遍历的,都需要实现一个遍历器Iterator。而数组、字符串、Set、Map结构,早就内置好了Iterator(迭代器),它们的原型中都有一个Symbol.iterator方法,而Object对象并没有实现这个接口,使得它无法被for...of遍历

猜你喜欢

转载自blog.csdn.net/xiasohuai/article/details/82184187