forEach 如何跳出本次循环和终止循环


通常,在 for 循环中跳出循环可以用 break 或者 continue 来跳出循环,那么这两个在 forEach 函数中好使吗,为此我们来试一试。

1、forEach 跳出本次循环

可使用 return 语句跳出本次循环,执行下一次循环

var arr = [1,2,3,4,5,6]
arr.forEach((item) => {
    if (item === 3) {
        return
    }
    console.log(item)
})
将输出 1 2 4 5 63不会输出

可以看到,forEach 中使用 return 语句的作用只能跳出当前循环(实现了 continue 的效果),并不能跳出整个循环,没达到期待的效果,满足条件后还继续执行了循环。

在 forEach 中使用 break:

let arr = [1,2,3,4,5,6,7,8,9];

arr.forEach((item)=>{
if(item == 6) {
    break;
}
console.log('item',item);
})
console.log(123)
//运行结果:SyntaxError: Illegal break statement :语法错误:非法的break语句

直接报错了,后面的代码也没执行。

在 forEach 中使用 continue:

let arr = [1,2,3,4,5,6,7,8,9];
arr.forEach((item)=>{
if(item == 6) {
continue;
}
console.log('item',item);
})
console.log(123)

//打印结果:SyntaxError: Illegal continue statement: no surrounding iteration statement :非法的continue语句:没有周围的迭代语句


直接报错了,后面的代码也没执行。

2、forEach 终止循环

forEach 无法通过正常流程(如 break)终止循环,但可通过抛出异常的方式实现终止循环

var arr = [1,2,3,4,5,6]
try{
  arr.forEach((item) => {
        if (item === 3) {
            throw new Error('End Loop')
        }
      console.log(item)
  })
} catch (e) {
    if(e.message === 'End Loop') throw e
}
将只输出 1 2

文章作者: BiLiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BiLiang !
评论
  目录