一直混淆了概念—關(guān)于跳出循環(huán)或終止方法,認(rèn)為一般循環(huán)return就可以終止,踩坑的是for Each使用return就不可以跳出循環(huán)。
for: 最初使用的就是for,可以通過break或return跳出,唯一需要注意的是:需要在函數(shù)中使用,否則報錯

image.png
let func = function() {
let arr = [1, 2, 3, 4]
for(let i = 0; i < arr.length; i ++) {
if(i == 1) return //可以終止循環(huán) 或break
console.log(arr[i])
}
}
// 1
forEach:這個就是使用break報錯,使用return不能跳出循環(huán),自己也踩坑了,去學(xué)習(xí)了下大家解決此問題兩種方式:
1.try...catch捕獲異常實現(xiàn)
try {
let arr = [1, 2, 3, 4];
arr.forEach((item, index) => {
if (item == 2) {
throw new Error("ending") //報錯,就跳出循環(huán)
} else {
console.log(item);
}
})
} catch (e) {
if (e.message == "ending") {
console.log("結(jié)束了");
} else {
console.log(e.message);
}
}
//1
//結(jié)束了
2.使用every、some代替,前者內(nèi)部return false跳出整個循環(huán),后者內(nèi)部return true跳出整個循環(huán)
let arr = [1, 2, 3, 4]
arr.some(item => {
if (item == 2) return true
console.log(item)
})
// 1