解析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 相关文章推荐
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 Javascript
Html中JS脚本执行顺序简单举例说明
Jun 19 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
浅谈javascript 函数属性和方法
Jan 21 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
javascript cookie基础应用之记录用户名的方法
Sep 20 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 Javascript
webpack多入口多出口的实现方法
Aug 17 Javascript
微信小程序如何使用云开发
May 17 Javascript
对Layer UI 模块化的用法详解
Sep 26 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数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
ES6中Array.includes()函数的用法
2017/09/20 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
Django自定义manage命令实例代码
2018/02/11 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
社区学习雷锋活动总结
2014/04/25 职场文书
服装设计专业求职信
2014/06/16 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
优秀党员申报材料
2014/12/18 职场文书
实习指导教师评语
2014/12/30 职场文书
奠基仪式致辞
2015/07/30 职场文书