label语句

在javascript中,我们可能很少会去用到 Label 语句,但是熟练的应用 Label 语句,尤其是在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的程序的位置。

label语句语法

label:statement
示例:
start:for(var i = 0; i < 5; i++){
    console.log(i)
}

举个栗子:(没添加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++;
    }
}
console.log(num); //95

这里当 i 和 j 等于5的时候只退出了 j 循环 ,输出结果是95

添加了label

var num = 0;
outermost:
for(var i = 0; i < 10; i++){
    for(var j = 0; j < 10; j++){
        console.log('i',i,'j',j,'num',num)
        if(i == 5 && j ==5){
            console.log('等于5了')
            break outermost;
        }
        num++;
    }
}
console.log(num); //55

这里break语句带了一个参数:要返回到的标签(返回到哪里),添加这个标签的结果将导致break语句不仅会退出 j 循环,还会退出 i 循环

再看下面的例子,注意outPoint:

var num = 0;
for (var i = 0; i < 10; i++) {
    outPoint:
    for (var j = 0; j < 10; j++) {
        for (var k = 0; k < 10; k++) {
            console.log('i', i, 'j', j, 'num', 'k', k, num)
            if (i == 5 && j == 5 && k == 5) {
                console.log('等于5了')
                break outPoint;
            }
            num++
        }
    }
}
console.log(num); // 955 ,如果没有label语句 输出的是995

 有label:

 无label:

可以看出有label语句的退出了 k 和 j 循环,无label语句的只退出k循环

continue语句中使用label:

var num = 0;
outPoint:
for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        console.log('i', i, 'j', j, 'num', num)
        if (i == 5 && j == 5) {
            console.log('等于5')
            continue outPoint;
        }
        num++
    }
}
console.log(num) // 95,没使用label输出的是99

有label执行结果:

 无label执行结果:

continue语句会强制继续执行循环---退出内部循环,执行外部循环,当 j 是5是,continue语句执行,意味着内部循环少执行了5次。

原文地址:https://www.cnblogs.com/YAN-HUA/p/11343359.html