JavaScript中break、continue和return都可以结束循环,其中break和continue只能用在for循环、while循环和do while循环中,而return只能用在函数体内,在函数外使用return会报错。
break:
结束循环,只能结束离break最近的那个循环。break结束循环后循环体内break后面的代码不会继续运行,如果是嵌套循环,break只能结束与之最近的那层循环。
for(let i=0;i<5;i++){
if(i === 3){
break;
}
console.log(i);
}
上面代码最后输出为:
0
1
2
在i===3条件满足的时候break会结束循环。
function f() {
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 6; j++) {
if (j === 3) {
break;
}
console.log("j==" + j);
}
console.log("i==" + i);
}
}
f();
上面代码中break在内层循环for (let j = 0; j < 6; j++)中,break只能结束与之最近的循环,也就是上面的内层循环,所以上面代码j每次只能打印出0、1、2一共打印5次,而i则可以打印0-4。
continue:
结束当前循环,继续下次循环。continue只能结束当前那一次循环,循环体如果还没循环完还会继续下一次循环。
for(let i=0;i<5;i++){
if(i===3){
continue;
}
console.log(i);
}
当i===3条件满足的时候使用了continue结束了本次循环,所以i等于3这次循环执行不到打印的地方,而循环体没循环完会继续下一次的循环,所以上面代码最后会打印出:
0
1
2
4
return:
return不仅会结束循环而且return在结束的时候还可以携带返回值。即便是在嵌套循环中return也会结束整个循环。与break不一样,break之后结束与之最近的那个循环体。
function f1() {
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 6; j++) {
if (j === 3) {
return;
}
console.log(j);
}
console.log(i);
}
}
f1();
上面代码在内层循环中j===3的时候return,这个时候不仅结束了for (let j = 0; j < 6; j++)这个内层循环,外层循环也会一起结束,即使函数f1中在for循环后面还有代码也不会执行到。上面代码打印出:
0
1
2
function f1() {
for (let i = 0; i < 5; i++) {
for (let j = 0; j < 6; j++) {
if (j === 3) {
return;
}
console.log(j);
}
console.log(i);
}
console.log("f1");
}
f1();
上面代码依然打印出:
0
1
2
console.log(“f1”);这句代码执行不到。