JavaScript label语句

使用label 语句可以在代码中添加标签,以便将来使用。

以下是label 语句的语法:

label: statement

下面是一个示例:

start: for (var i=0; i < count; i++) {
  alert(i);
}

这个例子中定义的start 标签可以在将来由break 或continue 语句引用。

加标签的语句一般都要与for 语句等循环语句配合使用。

Break

var num = 0;
outermost:
for (var i=0; i < 10; i++) {
    for (var j=0; j < 10; j++) {
        if (i == 5 && j == 5) {
            break outermost;
        }
    num++;
    }
}
alert(num); //55

在这个例子中,outermost标签表示外部的for 语句。如果每个循环正常执行10 次,则num++语句就会正常执行100 次。

换句话说,如果两个循环都自然结束,num的值应该是100。但内部循环中的break 语句带了一个参数:要返回到的标签。

添加这个标签的结果将导致break 语句不仅会退出内部的for语句(即使用变量j 的循环),而且也会退出外部的for 语句(即使用变量i 的循环)。为此, 当变量i和j都等于5 时,num的值正好是55。

Continue

var num = 0;
outermost:
for (var i=0; i < 10; i++) {
    for (var j=0; j < 10; j++) {
        if (i == 5 && j == 5) {
            continue outermost;
        }
    num++;
    }
}
alert(num); //95

在这种情况下,continue 语句会强制继续执行循环——退出内部循环,执行外部循环。当j 是5 时,continue 语句执行,而这也就意味着内部循环少执行了5 次,因此num的结果是95。

虽然联用break、continue和label语句能够执行复杂的操作,但如果使用过度,也会给调试
带来麻烦。在此,我们建议如果使用label语句,一定要使用描述性的标签,同时不要嵌套过多的循环。

摘自:《JavaScript高级程序设计(第三版)》

原文地址:https://www.cnblogs.com/ljwTiey/p/7387838.html