三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 455|回复: 0
打印 上一主题 下一主题

JavaScript break/continue 语句 标签的应用

[复制链接]

942

主题

950

帖子

3062

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3062
跳转到指定楼层
楼主
发表于 2017-9-1 11:28:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 frankxu 于 2017-9-1 11:30 编辑

JavaScript 标签
正如您在 switch 语句那一章中看到的,可以对 JavaScript 语句进行标记。
如需标记 JavaScript 语句,请在语句之前加上冒号:
  1. label:
  2. statements
复制代码
break 和 continue 语句仅仅是能够跳出代码块的语句。
语法:
  1. break labelname;

  2. continue labelname;
复制代码
continue 语句(带有或不带标签引用)只能用在循环中。
break 语句(不带标签引用),只能用在循环或 switch 中。
通过标签引用,break 语句可用于跳出任何 JavaScript 代码块:
实例
  1. cars=["BMW","Volvo","Saab","Ford"];
  2. list:
  3. {
  4.     document.write(cars[0] + "<br>");
  5.     document.write(cars[1] + "<br>");
  6.     document.write(cars[2] + "<br>");
  7.     break list;
  8.     document.write(cars[3] + "<br>");
  9.     document.write(cars[4] + "<br>");
  10.     document.write(cars[5] + "<br>");
  11. }
复制代码

关于 JavaScript 标签与 break 和 continue 一起使用的理解。
break 的作用是跳出代码块, 所以 break 可以使用与循环和 switch 等
continue 的作用是进入下一个迭代, 所以 continue 只能用于循环的代码块。
代码块: 基本上是{}大括号之间

然后:
1. 默认标签的情况(除了默认标签情况,其他时候必须要有名标签,否则会有惊喜)
当 break 和 continue 同时用于循环时,没有加标签,此时默认标签为当前"循环"的代码块。
当 break 用于 switch 时,默认标签为当前的 switch 代码块:

有名标签的情况
  1. cars=["BMW","Volvo","Saab","Ford"];
  2. list:
  3. {
  4.         document.write(cars[0] + "");
  5.         document.write(cars[1] + "");
  6.         document.write(cars[2] + "");
  7.         break list;
  8.         document.write(cars[3] + "");
  9.         document.write(cars[4] + "");
  10.         document.write(cars[5] + "");
  11. }
复制代码
上述break list;会跳出list的代码块。如果将break换成continue会有惊喜,违反了明确中的第二点,因为list只是个普通代码块,而不是循环。除非list写成如下形式
list:
  1. for(var i=0; i<10; ++i)
  2. {
  3.         continue list;
  4. }
复制代码
有了标签,可以使用break和continue在多层循环的时候控制外层循环。
例如下面:
  1. outerloop:
  2. for (var i = 0; i < 10; i++)
  3. {
  4.         innerloop:
  5.                 for (var j = 0; j < 10; j++)
  6.                 {
  7.                 if (j > 3)
  8.                 {
  9.                         break;
  10.                 }
  11.                 if (i == 2)
  12.                 {
  13.                         break innerloop;
  14.                 }
  15.                 if (i == 4)
  16.                 {
  17.                         break outerloop;
  18.                 }
  19.                 document.write("i=" + i + " j=" + j + "");
  20.         }
  21. }
复制代码

回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2026-1-19 23:56 , Processed in 0.058332 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表