解析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 相关文章推荐
自动完成的搜索框javascript实现
Feb 26 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
Oct 04 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
Vue SSR 组件加载问题
May 02 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
vue框架制作购物车小球动画效果实例代码
Sep 26 Javascript
微信小程序 轮播图实现原理及优化详解
Sep 29 Javascript
简单了解vue中的v-if和v-show的区别
Oct 08 Javascript
node crawler如何添加promise支持
Feb 01 Javascript
js判断鼠标移入移出方向的方法
Jun 24 Javascript
JS前端canvas交互实现拖拽旋转及缩放示例
Aug 05 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
PHP新手上路(十三)
2006/10/09 PHP
PHP 数组实例说明
2008/08/18 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
laravel自定义分页效果
2017/07/23 PHP
YII框架关联查询操作示例
2019/04/29 PHP
jQuery 1.0.2
2006/10/11 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
Extjs学习笔记之七 布局
2010/01/08 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
Flask之请求钩子的实现
2018/12/23 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
乌克兰在线药房:Аптека24
2019/10/30 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
计算s=f(f(-1.4))的值
2014/05/06 面试题
简历中的自我评价怎么写
2014/01/29 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
会计岗位职责范本
2015/04/02 职场文书
施工安全保证书
2015/05/09 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
董存瑞观后感
2015/06/11 职场文书