javaScript label语句 结束嵌套循环

663 阅读1分钟

今天闲着 就在看js高级程序设计 以前说看也一直没看

刚一看就发现一个从没听过的语句 label

以下是书中的描述

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


看了一下 主要是在嵌套循环中使用的 主要用来控制循环

最主要的作用可能就是 结束嵌套循环吧

下面用书中的例子做介绍

label语句

break 和 continue 语句都可以与 label 语句联合使用,从而返回代码中特定的位置。

只会结束内层循环

这种联合使用的情况多发生在循环嵌套的情况下,如下面的例子所示

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

上面例子 最后结果是95 因为break只是退出了内层循环 结束了i==5的时候j==5之后的内层循环 所以少了五次计数

外层循环一起结束

再看下面的例子

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

可以看到循环次数大大减少

这里将外层循环加一个标签 在内部break的时候加上这个标签 发现 i==5和j==5之后的循环都没有在进行 所以结果是55


难道是因为嵌套循环的性能问题 所以大家都避免嵌套循环才导致这个语句不常见吗

不过更可能还是是自己知识面还不够广吧 哈哈哈哈