zoukankan      html  css  js  c++  java
  • 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开始查找。少循环了许多次。
  • 相关阅读:
    arduino电子艺术PWM直流电机电调实验
    横坐标轴移动位置
    将不才则三军倾
    Source Insight常用快捷键及注释快捷键设置
    dos2unix批量转换的脚本
    win8: ListView
    win8: Asynchronous Programming in JavaScript with “Promises”
    WindJS 中的$await
    iphone:关于沙盒 存储路径
    win8: hello gril
  • 原文地址:https://www.cnblogs.com/yyy6/p/8885128.html
Copyright © 2011-2022 走看看