JavaScript中的各种“循环”

前言

日常开发中的业务场景,业务逻辑上常常用到遍历循环,JS中提供了许多对应的API方法,这里不会从零讲解它们怎么用,而是介绍他们的适用用场景和个中区别

1. forEach,map, some,fiiter,every

这几个是定义在Array.prototype上的数组专属的遍历API,

  • forEach:单纯地遍历每个数组元素进行需要的逻辑处理,无返回值,不可中断遍历
  • map:主要用于根据需求来格式化数组的每个元素,最终返回一个由每次遍历的返回值组成的新数组,不可中断遍历
  • some:主要用于判断是否存在符合条件的元素,找到就中断遍历,最终返回boolean值
  • every:主要用于判断是否所有元素都符合指定条件,不可中断遍历,最终返回boolean值
  • filter:主要用于筛选出符合指定条件的元素,去掉不需要的元素,不可中断遍历,最终返回一个新数组

2.while和do while循环

常用于不太明确循环次数,只知道循环终止条件的场景,使用频率不高。

这俩都可中断循环,区别在于逻辑处理和循环条件判断的先后顺序:

while循环先判断条件后执行逻辑,所以可能一次循环都不执行

do while先执行逻辑后判断条件,至少执行一次循环

3.for循环

这应该是使用频率最高的循环方法,也是最通用的标准循环方法。

一些数据类型独有的循环API都可通过for循环来模拟实现。应用场景很广泛。

它的特点是可调至下次循环和中断循环,并且可以在ES6中的async异步函数中使用await关键字

for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域:

for (let i = 0; i < 3; i++) {
  let i = 'abc';
  console.log(i);
}
// abc
// abc
// abc

4.for in循环

可用于遍历数组,对象和字符串

对于对象,for in应该是在ES6之前对象属性遍历的标准方法,它的遍历范围是目标对象及其原型链中所有可枚举的属性。

如果你只想遍历对象直接包含的属性,该方法并不合适。

对于数组和字符串,for in遍历的则是元素或单个字符的素引,所以对于4 in [2,4,6]的结果并不是true,因为该数组里索引只有0 1 2

for循环可以在ES6中的async异步函数中使用await关键字

5.for of循环

for of循环是Es6提出的针对部署有iterator接口的数据机构的专属遍历方法。与for in相比,它没有那些缺点,并且可以配合break,continue和retun进行使用

数组,字符串,以及E56新提出的Map和Set数据机构都默认拥有该接口,所以可直接使用。

而对象默认没有部署iterator接口,不可直接使用。不过Obejct.keys以及ES6配合新增的Object.values,Object.entries等 API,可以解决对象遍历的问题。

for of循环可以在ES6中的async异步函数中使用await关键字

在ES6普及的如今,个人建议统一使用for of循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值