JS——for,for in,forEach,for of循环遍历辨析

孤人 提交于 2019-11-29 17:09:55

问题来源是遇到的一道题:

正确答案:ABCD,答案解析见文章最后

for,for in,forEach,for of循环遍历辨析(由于字符串与数组的遍历是一样的,所以关于字符串的遍历这里不再赘述)

首先,最简单的for循环遍历

var arr = [10, 20, 30, 40, 50];

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

 

for in(快速枚举法)(遍历字符串的方法与数组相同)

for(var i in arr){
    //i 是下标
    console.log(arr[i]);
}

var obj = {
  name: "小明",
  age: 40,
  sex: "男"
}
for(var i in obj){
   //i  属性
   console.log(i, obj[i]);}

从上面可以看出for in其实是通过遍历数组、字符串的下标来进行遍历的,而for in遍历对象是通过属性来进行遍历来的。

 

forEach(ECMA5中提供的方法)

arr.forEach(function(item, index, arr){
    console.log(item, index);
})

这里的item代表数组的元素(在字符串中代表的是一个字符),index代表的是数组的下标,arr是数组名(或字符串名)

【注意】forEach是ECMA5中提供的一种遍历数组的方法,他只能用来遍历数组不能遍历字符串和对象

 

for of(ECMA6中提供的一种遍历方法

 

for(var item of arr){
    console.log(item);
}

 

for of 方法遍历数组或字符串实质上是直接遍历的数组的值

 

综上所述

  1)for、for in、for of、forEach都可以用来遍历数组,其中,for、for in循环遍历数组是通过遍历数组的下标进行遍历的,而forEach和for of是通过遍历值(即数组的元素)来进行遍历的。

  2)for、for in、for of都可以用来遍历字符串,遍历原理与数组一样;forEach不能用来遍历字符串。

  3)只有for in可以用来遍历对象。for in遍历对象是通过遍历对象的属性遍历的。

文章开始的问题显而易见。。。

【注意】for of还可以用来对集合进行遍历,通过遍历值遍历。

(上述为自己理解,如有错误欢迎指正)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!