解析JavaScript中的标签语句


Posted in Javascript onJune 19, 2013

Javascript中标签(label)是一个标识符。标签可以与变量重名,它是一个独立的语法元素(既不是变量,也不是类型),其作用是标识”标签化语句(labeled statement)”

标签声明
标签(label)可以声明在任何一个语句前面,或者语句块前,以使得语句或语句块被“标签化(labeled)”。
label1:

    myFun1();
label2:{
   var i = 1, j = 2;
   var k = i + j;
}

注意:当标签(label)后面连续多条语句时,只有第一条语句被标签化
虽然GOTO是Javascript的保留关键字,但是里没有GOTO语句。除了GOTO外,Javascript里有另外三个关键字可以改变程序的流程:break,continue和return。其中break和continue可以和标签(label)一起使用。

break与标签
break通常用于跳出for、while循环和跳出switch语句。默认情况下,break子句作用于循环语句的最内层,或者整个switch语句,因此它不必特别地指定中断语句的范围。但break子句具有一种扩展语法,以指示其作用范围。

break my_label;
除了可以跳出循环和switch分支,还可以跳出标签化语句(labeled statement)的内部
var str = prompt('please input a string','1234567890');my_label: {
    if (str && str.length < 10) {
        break my_label:
    }
    str = str.substr(str.length-10);
}
alert(str);

continue与标签
continue仅对循环语句有意义,因此它只能作用于for、for…in、while和do…while这些语句的内部。默认情况下,它表明停止当前循环并跳转到下一次循环迭代开始处运行。

continue后面也可以带一个标签(label),这时表明从循环体内部中止,并继续到标签(label)指示处开始执行,并且这个标签指示的语句必须是包含此continue的循环语句。
例如:
loop:

  for (var j = 0; j < 5; j++)
  {
     if (j == 2) continue loop;
     document.write("loop: " + j +);
  }

上面例子continue + label体现不出label的特殊作用,其实完全可以把label去掉,效果相同。下面再看一个例子
document.write("Entering the loop!<br /> ");
outerloop:   // This is the label name
for (var i = 0; i < 3; i++)
{
   document.write("Outerloop: " + i + "<br />");
   for (var j = 0; j < 5; j++)
   {
      if (j == 3){
         continue outerloop;
      }
      document.write("Innerloop: " + j + "<br />");
   }
}
document.write("Exiting the loop!<br /> ");

使用continue label直接跳到外层循环才是其意义所在。
Javascript 相关文章推荐
JQuery中对Select的option项的添加、删除、取值
Aug 25 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
Mar 02 Javascript
jQuery scrollFix滚动定位插件
Apr 01 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
Apr 06 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
JS防止网页被嵌入iframe框架的方法分析
Sep 13 Javascript
详解Vue组件之间的数据通信实例
Jun 17 Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
Sep 17 Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 Javascript
vscode中Vue别名路径提示的实现
Jul 31 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 Javascript
解析window.open的使用方法总结
Jun 19 #Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
Jun 19 #Javascript
Js,alert出现乱码问题的解决方法
Jun 19 #Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 #Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 #Javascript
Jquery事件的连接使用示例
Jun 18 #Javascript
jquery属性过滤选择器使用示例
Jun 18 #Javascript
You might like
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python的常用模块之collections模块详解
2018/12/06 Python
python3 property装饰器实现原理与用法示例
2019/05/15 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
DJI全球:DJI Global
2021/03/15 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
调解员先进事迹材料
2014/02/07 职场文书
前台文员职责范本
2014/03/07 职场文书
2014年团工作总结
2014/11/27 职场文书
门市房租房协议书
2014/12/04 职场文书
2014年教研员工作总结
2014/12/23 职场文书
通知函的格式
2015/04/27 职场文书
考试后的感想
2015/08/07 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
Python实现天气查询软件
2021/06/07 Python
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏