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

2019-12-31  本文已影响0人  krystal_H

一直混淆了概念—关于跳出循环或终止方法,认为一般循环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
上一篇下一篇

猜你喜欢

热点阅读