前言
- 常见的需要退出循环的方法有for、forEach、for in、for of、some、every等。
- 常见对函数进行中断或跳出循环的操作有break return continue。
场景
- for、for in、for of:使用
break、return、continue
- return:跳出当前正在执行函数。会直接跳出多层循环,返回调用的方法外部。return后面的内容是不会继续执行的
function fn() {
for(let i = 0; i < 5; i++) {
for(let j = 0; j < 6; j++) {
if(i === 2) {
return false
}
console.log(i);
}
}
console.log('猪八戒');
}
fn();
- break:结束当前循环,会继续执行该循环之后的代码,可以指定label退出特定的循环(用来退出最外层循环)。
function fn() {
for(let i = 0; i < 5; i++) {
if(i === 2) {
break
}
console.log(i);
}
console.log('猪八戒');
}
fn();
function fn() {
label: for (let i = 0; i < 5; i++) {
for (let j = 0; j < 6; j++) {
if (i === 2) {
break label;
}
console.log(i);
}
}
console.log("猪八戒");
}
fn();
- continue:结束本次的循环,直接进行下一次的循环
function fn() {
for(let i = 0; i < 5; i++) {
if(i === 2) {
continue
}
console.log(i);
}
console.log('猪八戒');
}
fn()
- forEach:可以使用
throw+try catch。其他像map、filter也能通过此法直接退出
let arr = [1, 2, 3, 4, 5];
try {
arr.forEach(item => {
if (item === 3) {
throw new Error("err");
}
console.log(item);
});
} catch(e) {
console.log(e.message);
}
- every:
return false跳出循环(需要写return true)
let arr = [1, 2, 3, 4, 5];
arr.every(item => {
if(item === 3) {
return false
} else {
console.log(item)
return true
}
})
let arr = [1, 2, 3, 4, 5];
arr.some(item => {
if(item === 2) {
return true
}
console.log(item)
})