前言

  在日常开发中我们经常使用到递归、break、continue、return等语句改变程序运行的位置,其实,在 JavaScript 中还提供了标签语句,用于标记指定的代码块,便于跳转到指定的位置。本文来记录一下标签语句的使用方法。

正文

  1.标签语句介绍

  标签语句用于给语句加标签,标签可以与变量重名,它是一个独立的语法元素(既不是变量,也不是类型),其作用是标识”标签化语句(labeled statement)”相当于定位符,用于跳转到程序的任意位置,语法如下:
  label: statement

例如:

    hello:console.log("hello")

  标签语句可以改变程序的执行流程,类似于break,continue和return。其中break和continue可以和标签一起使用。

  2.标签语句使用

  (1)标签语句和 break 配合使用,跳出特定的循环
    let num = 0;
mylabel:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break mylabel;
}
num++;
}
}
console.log(num); // 55
  在这个例子中, outermost 标签标识的是第一个 for 语句。正常情况下,每个循环执行 10 次,意味着 num++ 语句会执行 100 次,而循环结束时 console.log 的结果应该是 100。但是, break 语句带来了一个变数,即要退出到的标签。添加标签不仅让 break 退出(使用变量 j 的)内部循环,也会退出(使用变量 i 的)外部循环。当执行到 i 和 j 都等于 5时,循环停止执行,此时 num 的值是 55。
  (2)标签语句和 continue 配合使用
    let num = 0;
mylabel:
for (let i = 0; i < 10; i++) {
for (let j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
continue mylabel;
}
num++;
}
}
console.log(num); // 95
  continue 语句会强制循环继续执行,但不是继续执行内部循环,而是继续执行外部循环。当 i 和 j 都等于 5 时,会执行 continue ,跳到外部循环继续执行,从而导致内部循环少执行 5 次,结果 num 等于 95。

写在最后

  组合使用标签语句和 break 、 continue 能实现复杂的逻辑,但也容易出错。注意标签要使用描述性强的文本,而嵌套也不要太深。

  以上就是本文的全部内容,希望给读者带来些许的帮助和进步,方便的话点个关注,小白的成长踩坑之路会持续更新一些工作中常见的问题和技术点。

最新文章

  1. CI 3.0.6 控制器打印base_url 地址不为 localhost的解决方法
  2. solr安装笔记与定时器任务
  3. Downloader调用WCF服务返回文件
  4. python3抓取异步百度瀑布流动态图片(一)查找post并伪装头方法
  5. ORA-12519, TNS:no appropriate service handler found
  6. C,C++容易被忽略的问题
  7. Codeforces Round #328 (Div. 2) D. Super M 虚树直径
  8. Javascript之计时
  9. ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明
  10. dotnet使用Selenium执行自动化任务
  11. C++中const用于函数重载
  12. Java常用日志框架介绍
  13. springmvc 对 jsonp 的支持
  14. 配置ssh无密钥登陆
  15. 使用Keras对交通标志进行分类
  16. Chimee - 简单易用的H5视频播放器解决方案
  17. Docker-常用命令(7)
  18. PXC添加新节点
  19. mydqldump 备份数单库 然后还原数据的时候报:ERROR 1881 (HY000) at line 52: Operation not allowed when innodb_forced_recovery &gt; 0.
  20. 2018.09.27 hdu4507吉哥系列故事——恨7不成妻(数位dp)

热门文章

  1. ES6基础之let、const
  2. JavaScript 特殊字符
  3. GUI容器之Panel
  4. Java数八大据类型的拓展
  5. python使用pip安装模块出错 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None))
  6. 并发编程之:AQS源码解析
  7. Python之requests模块-session
  8. noip模拟46
  9. 【死磕NIO】— NIO基础详解
  10. 为老的vueCli项目添加vite支持