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开始查找。少循环了许多次。
  • 相关阅读:
    oracle安装常见问题
    VM EXSI安装使用
    虚拟机---无法获取所有权
    Http常用状态码
    翻译:CommonJS的wiki
    如何在ie6/ie7/ie8中实现iframe背景透明
    网页版俄罗斯方块
    HTML5之pushstate、popstate操作history,无刷新改变当前url
    我们是如何做好前端工程化和静态资源管理
    dns-prefetch—DNS预解析技术
  • 原文地址:https://www.cnblogs.com/yyy6/p/8885128.html
Copyright © 2011-2022 走看看