今天一个后端同事问我关于forEach()如何终止循环的问题(我一个小年轻何德何能替大哥解决问题,心里暗想必须好好表现!),虽然问的我一愣。但我还是毫不犹豫和他说直接return就可以。结果一想不对劲发现好像正常方法不能终止forEach()。于是查询资料有了以下的信息,供大家参考:
1.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不会输出
2.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
//JS中forEach跳出本次循环和终止循环
注意:
一定不要忘记使用try和catch来捕获,否则不会继续执行下面的代码。这也是同事问我为什么后面不执行了才让我更加注意这些细节的!如果不想看到警告,将if(e.message === ‘End Loop’) throw e这一句加在catch里面。