举一个比较典型的例子,看完后即明白 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循环继续执行。
JavaScript switch语句虽然参考的C语言的写法,但是有特殊性
- switch和case可以使用任意表达式,不一定是常量
- switch语句进行比较的时候是全等于(
===
)操作,不会发生类型转换
switch(a){
case 1:
statement;
break;
case 2:
statement;
break;
case 3:
statement;
break;
default:
statement;
}
for-in
for-in是一种迭代语句,用于枚举对象的属性 属性无顺序之说
for(property in object){
statement
}