在 javascript 中,我们可能很少会去用到 Label 语句,但是熟练的应用 Label 语句,尤其是在嵌套循环中熟练应用 break、continue 与 Label 可以精确的返回到你想要的程序的位置
// Label 语句,按书本上说的语法是:
Label: statement
begin: for (var i = 0; i < 10 ; i++ ){
alert(i);
}
举一个比较典型的例子,看完后即明白 Label 的应用:(未添加 Label)
var num = 0;
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break;
}
num++;
}
}
alert(num); // 循环在 i 为5,j 为 5 的时候跳出 j 循环,但会继续执行 i 循环,输出 95
对比使用了 Label 之后的程序:(添加 Label 后)
var num = 0;
outPoint:
for (var i = 0 ; i < 10 ; i++){
for (var j = 0 ; j < 10 ; j++){
if( i == 5 && j == 5 ){
break outPoint;
}
num++;
}
}
alert(num); //循环在 i 为 5,j 为 5 的时候跳出双循环,返回到 outPoint 层继续执行,输出 55
对比使用了 break、continue 语句:
var num = 0;
outPoint:
for(var i = 0; i < 10; i++) {
for(var j = 0; j < 10; j++) {
if(i == 5 && j == 5) {
continue outPoint;
}
num++;
}
}
alert(num); // 95
从 alert(num) 的值可以看出,continue outPoint; 语句的作用是跳出当前循环,并跳转到outPoint(标签)下的 for 循环继续执行。
return 关键字并不是专门用于跳出循环的,return 的功能是结束一个方法
。 一旦在循环体内执行到一个 return 语句,return 语句将会结束该方法,循环自然也随之结束。与 continue 和 break 不同的是,return 直接结束整个方法,不管这个 return 处于多少层循环之内
break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统将完全结束循环,开始执行循环之后的代码。 break 不仅可以结束其所在的循环,还可结束其外层循环
continue 的功能和break有点类似,区别是 continue 只是中止本次循环,接着开始下一次循环。而 break 则是完全中止循环
return true; // 返回正常的处理结果
return false; // 返回错误的处理结果; 终止处理; 阻止提交表单; 阻止执行默认的行为
return; // 把控制权返回给页面