JavaScript中label语句的使用

最近看Javascript高级程序设计,看到一个有趣的问题,label的使用,以此做个笔记。

  1. 看一个break和continue的例子

      break终止循环;

      continue跳出本次循环,继续下次循环。

    for(var i = 0; i < 10; i++){
        if(i%5==0){
            break;
        }
        num++;
    }

    console.log(num) // 4
    for(var i = 0; i < 10; i++){
        if(i%5==0){
            continue;
        }
        num++;
    }

    console.log(num) // 8

  2. break和continue语句都可以与label联合使用,从而达到代码中特定的位置,这种联合使用的情况多发生在循环嵌套的情况下;

  break label;

    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;
            }else{
                console.log(i,j,88);
            }
            num++;
        }
    }
    console.log(num); //55

  内部循环中break语句带了一个参数,要返回到的标签。添加这个标签的结果将导致break语句不仅会退出内部for循环,而且也会退出外部的for循环,为此当变量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;
            }else{
                console.log(i,j,88);
            }
            num++;
        }
    }
    console.log(num); //95

  在这种情况下,continue语句会强制继续执行循环(退出内部循环,执行外部循环)。当变量i和j都等于5时,num的值正好是95.

  三个for循环

   var itemsId = [1,3];
    var all = [[{id:1,name:hehe},{id:3,name:hehe}],[{id:2,name:hehe},{id:4,name:hehe}]];
    for(var i=0;i<itemsId.length;i++){
        outPoint:
        for(var j=0;j<all.length;j++){
            for(var k=0;k<all[j].length;k++){
                if( all[j][k].id == itemsId[i] ){
                    console.log(all[j][k]);
                    break outPoint;
                }
            }
        }
    }
  这样,在all[j][k].id == itemsId[i]的时候,就会跳出到outPoint的位置,直接跳出两个循环,从下一个id开始查找。少循环了许多次。
原文地址:https://www.cnblogs.com/yyy6/p/8885128.html