break、continue都具有跳转作用
break语句用于跳出代码块、循环、switch。
- eg:
var i= 0
var j=6
do{
++i
if(i==2) break
}while(i<j)
console.log(i)//2
- eg:
for(var i=0;i<10;i++){
console.log(i)//0 1 2
if(i===2)break
}
continue语句用于立即终止本轮循环,开始下一轮循环
- eg:
var i= 0
var j=6
do{
++i
if(i==2) continue
console.log(i)//1,3,4,5,6
}while(i<j)
- eg:
for(var i=0;i<5;i++){
if(i===2)continue
console.log(i)//0,1,3,4
}
var i = 0;
label
- label相当于定位符,用于跳转到程序的任意位置。通常与break语句和continue语句配合使用,跳出特定的循环。
- eg:
outFor:
for (var i = 0; i <3; i++){
for (var j = 0; j <3; j++){
if (i === 1 && j === 2) break outFor;
console.log(i,j,'---------------------j');
}
console.log(i)
}
console.log('-------------------------------------------------------------')
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(i==1&&j==1) break
console.log(i,j,'------------j')
}
console.log(i)
}
结果:
image.png
上面的连个例子,有label的循环嵌套,直接跳出循环嵌套。若没有label只能跳出当前层循环,继续执行外层循环
- continue label 会强制继续执行循环(退出内部循环,执行外部循环)
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(i==1&&j==1) break
console.log(i,j,'------------j')
}
console.log(i)
}
console.log('-------------------------------------------------------------')
continueOut:
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(i==1&&j==1) continue continueOut;
console.log(i,j,'------------j')
}
console.log(i)
}
//这里区分一下continue label,和break,
//continue label跳出当前循环,不会执行外部循环代码,直接让外部循环做++运算,进行下一次循环,
//break跳出当前循环,但是会继续执行外部循环代码
结果:
image.png
- label也可以用于跳出代码块。
out:
{
console.log(1);
break out;
console.log('不会输出');
}
console.log(2);
return
- return语句用于指定函数返回的值并跳出函数。return语句只能出现在函数体内,出现在代码中的其他任何地方造成语法错误
- eg:
var i=3
function fun() {
if(i===3){
return i+2
}else{
return i+4
}
}
console.log(fun())//5
- eg:
function fun() {
return
}
console.log(fun())//undefined
- return false;返回错误的处理结果;终止处理;阻止提交表单;阻止执行默认的行为。
有时候我们习惯用return false 来阻止浏览器的默认行为,但是每次return false 的时候,实际上干了3件事情:
- event.preventDefault()
- event.stopPropagation()
- 跳出函数,并返回数据