通常,在 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 6,3不会输出
可以看到,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