Javascript中的label语句

最近在浏览《JavaScript高等程序设计第3版》的过程当中,看到了label语句的运用,由于之前没运用过,以为有必要进修一下,特此纪录。
label语句是ECMA中定义的语句,因而不存在兼容性的题目,运用label语句是为了给代码增加标签,轻易未来运用,语法以下:

label: statement

//下面是一个示例:
 start: for (var i=0; i < count; i++) {
        alert(i);
}

label语句可以与break 和 continue 语句团结运用,从而返回代码中特定的位置。这类团结运用的状况多发生在轮回嵌套的状况下:

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 语句也可以像如许与 label 语句联 用,以下面的例子所示:

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高等程序设计第3版》
    原文作者:a公子小白
    原文地址: https://segmentfault.com/a/1190000014018241
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞