一直混淆了概念—关于跳出循环或终止方法,认为一般循环return
就可以终止,踩坑的是for Each
使用return
就不可以跳出循环。
for:
最初使用的就是for
,可以通过break
或return
跳出,唯一需要注意的是:需要在函数中使用,否则报错
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.使用every
、some
代替,前者内部return false
跳出整个循环,后者内部return true
跳出整个循环
let arr = [1, 2, 3, 4]
arr.some(item => {
if (item == 2) return true
console.log(item)
})
// 1
网友评论