注意forEach不能使用return跳出循环

一直混淆了概念—关于跳出循环或终止方法,认为一般循环return就可以终止,踩坑的是for Each使用return就不可以跳出循环
for: 最初使用的就是for,可以通过breakreturn跳出,唯一需要注意的是:需要在函数中使用,否则报错

image.png

let func = function() {
    let arr = [1, 2, 3, 4]
    for(let i = 0; i < arr.length; i ++) {
       if(i == 1)  return  //可以终止循环 或break
       console.log(arr[i])
    }
}
// 1

forEach:这个就是使用break报错,使用return不能跳出循环,自己也踩坑了,去学习了下大家解决此问题两种方式:
1.try...catch捕获异常实现

try {
    let arr = [1, 2, 3, 4];
    arr.forEach((item, index) => {
        if (item == 2) {
          throw new Error("ending") //报错,就跳出循环
        } else {
          console.log(item);
        }
    })
} catch (e) {
    if (e.message == "ending") {
        console.log("结束了");
    } else {
        console.log(e.message);
   }
}
//1
//结束了

2.使用everysome代替,前者内部return false跳出整个循环,后者内部return true跳出整个循环

let arr = [1, 2, 3, 4]
arr.some(item => {
  if (item == 2) return true
  console.log(item)
})
// 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容