一、遍历内容的异同

1.for 和 for...in 是针对数组下标的遍历

2.forEach 及 for...of 遍历的是数组中的元素

二、对非数字下标的处理

由于array在js中也是对象中的一种, 假设array=[1,2,3],所以array.key = 'item' 这种写法也是成立的,所以数组中的下标并不都是数字

1.for...in 可以遍历出非数字的下标,即可以得到  1,2,3,item

2.其他三种只能遍历出数字下标

三、空元素

假如有一个数组 array=[1,,3],这个array.length 为 3

1.for 和 for...of 在遍历array的时候会输出 1,undefined,3

2.forEach 和 for...in 则会跳过空元素,只输出 1,3

四、遍历块中的this 指向

1.for for...in for...of 块中的this指向和块外作用域一致

2.forEach 的函数参数为非箭头函数时,this指向是undefined(废话,新增了作用域而且这个作用域并没有被显式调用)

五、async/await 和 generators 的处理

假设有一个  async 函数,在函数中要调用forEach,同时在forEach中使用await 是有限制的,其他3种则没有。

如果想在forEach中正确使用await,需要这么做:

async function print(n) {
await new Promise(resolve => setTimeout(() => resolve(), 1000 - n * 100));
console.log(n);
} async function test() {
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].forEach(print);
} test();

参考:

http://thecodebarbarian.com/for-vs-for-each-vs-for-in-vs-for-of-in-javascript.html

for 、forEach 、 forof、 forin遍历对比的更多相关文章

  1. for-each、for-in和for-of的区别

    for-each.for-in和for-of的区别 1.forEach()方法 用于调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. arra ...

  2. for,for-each,for-in,for-of,map的比较

    参考: 全面解析JavaScript里的循环方法之forEach,for-in,for-of Iterator 和 for...of 循环 JavaScript Array 对象 常规for for循 ...

  3. forEach、for-in与for-of的区别

    forEach.for-in与for-of的区别 forEach介绍 objArr.forEach(function (value) { console.log(value); }); foreach ...

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

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...

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

    JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) ...

  6. php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()

    在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告 Invalid argument supplied for foreach() ,但是很多时候这个数组是取自某些 ...

  7. C# for和 foreach 的数组遍历 比较

    刚学习程序,感觉写代码 很有意思,所以把自己的感悟写下来啦,第一次写博客,可能是菜鸟中的菜鸟  时间久了,相信就会写的很好哦! for和 foreach 的数组遍历 比较 很简单的程序,不解释啦! u ...

  8. for-in遍历json数据

    1.for遍历json数据 ','fun':'前端开发'} for(var attr in json){ alert(json[attr]) //遍历json属性的数据 alert(json['nam ...

  9. Java foreach操作(遍历)数组

    语法: 我们分别使用 for 和 foreach 语句来遍历数组 运行结果: 练习: import java.util.Arrays; public class HelloWorld { public ...

随机推荐

  1. python 内置函数02

    1. lambda 匿名函数 lambda 参数: 返回值 #常规计算两个数相加的函数 def func(a,b): return a+b print(func(1,9)) #lambda函数 my_ ...

  2. 【JavaScript&jQuery】5秒跳转

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  3. (一)Quartz2.2.1 简单例子

    转载至http://blog.csdn.net/a4307515/article/details/46985533 1.关键接口 Scheduler,任务调度的API:它可以用来启动或者终止任务等. ...

  4. Win10 安装 Linux 子系统

    Win10 安装 Linux 子系统 因为最近要使用Linux搭服务器,但是用远程的话延迟很烦,用双系统切换很麻烦,用虚拟机又会有点卡,刚好Windows10最近更新了正式版的WSL(windows下 ...

  5. [51nod1847]奇怪的数学题

    description 51nod 求\[\sum_{i=1}^{n}\sum_{j=1}^{n}sgcd(i,j)^k\]其中\(sgcd(i,j)\)表示\(i,j\)的次大公约数,如果\(gcd ...

  6. 最小点权覆盖集&最大点权独立集

    最小点权覆盖集 二分图最小点权覆盖集解决的是这样一个问题: 在二分图中,对于每条边,两个端点至少选一个,求所选取的点最小权值和. 方法: 1.先对图二分染色,对于每条边两端点的颜色不同 2.然后建立源 ...

  7. SCWS中文分词,demo演示

    上文已经讲了关于SCSW中文分词的安装配置,本节进入demo演示: <?php header('Content-Type:text/html;charset=UTF-8'); echo '< ...

  8. uCOS-II之移植20160823

    首先我们看一下uC/OS-II的框架图: 1.配置文件修改 +------------------------------------------ |core: os_core.c |  os: os ...

  9. js 生成二维码

    $(".good_info").on('click',function () { var id = $(this).data('id'); var string = 'http:/ ...

  10. centos7下安装mysql5.7.24

    第一步:下载rpm包 sudo wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-rel ...