JS循环中断与异步for...in forEach map

一 JS循环中断与异步:https://juejin.cn/post/6844903842425864200

  • forEach和map,针对await不生效;使用break或continue会报错;使用return 无效;
  • for循环、for...in,for...of,支持await,for和for...of中可以使用break和continue;for...in会忽略continue和break
Array.prototype.every();Array.prototype.some();Array.prototype.find();Array.prototype.findIndex()可以终止循环:
 1   // every在碰到return false的时候,中止循环。
 2   let arr = [1, 2, 3, 4, 5]
 3   arr.every(item => {
 4     console.log(item); //输出:1,2
 5     if (item === 2) {
 6       return false
 7     } else {
 8       return true
 9     }
10   })
11   // some在碰到return ture的时候,中止循环。
12   arr.some(item => {
13     console.log(item); //输出:1,2
14     if (item === 2) {
15       return true
16     } else {
17       return false
18     }
19   })
View Code

 

二 for...of与其他遍历语法比较:(https://juejin.im/post/5aea83c86fb9a07aae15013b
1. for循环:
  • 循环效率高;
  • 写法比较麻烦。
2. forEach循环:
  • 适用于循环次数未知,或者计算循环次数比较麻烦情况下;或者只是进行集合或数组遍历;
  • 无法中途跳出forEach循环,break命令或return命令都不能生效。
  • 不能对数组或集合进行修改(添加删除操作),如果想要修改就要用for循环。
3.Object.keys():
  • 返回对象自身可枚举属性组成的数组
  • 不会遍历对象原型链上的属性以及 Symbol 属性
  • 对数组的遍历顺序和 for in 一致
4. for...in循环:主要为遍历对象而设计,不适用于遍历数组。
遍历数组缺点:
  • 数组的键名是数字;
  • 不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键;
  • 某些情况下,for...in循环会以任意顺序遍历键名。
5. for ...of:
  • es6 中添加的循环遍历语法;
  • 支持遍历数组,类数组对象(DOM NodeList),字符串,Map 对象,Set 对象,Generator 对象;
  • 不支持遍历普通对象;
  • 遍历后输出的结果为数组元素的值;
  • 可搭配实例方法 entries(),同时输出数组的内容和索引;
 三 for循环嵌套:

for循环执行过程:

 for(①初始化表达式;②条件表达式;③更新表达式){
        循环体语句;
    }

1、执行初始化表达式,初始化变量;(初始化表达式只执行一次)

2、执行条件表达式(Boolean值),判断是否执行循环

  • 如果表达式值为true则执行循环体,
  • 如果表达式值为false则退出循环;

 4、执行更新表达式,更新表达式执行完之后,则继续执行第2步

如此循环往复,直到条件表达式的值为false。

 

推荐阅读:

 JS跳出for循环三种方法的区别(break、return、continue)

 

 

 

posted @ 2021-03-16 21:26  TerryMin  阅读(992)  评论(0编辑  收藏  举报