解析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 写类方式之七
Jul 05 Javascript
javascript 三种编解码方式
Feb 01 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
jQuery写fadeTo示例代码
Feb 21 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
Oct 10 Javascript
iscroll实现下拉刷新功能
Jul 18 Javascript
微信小程序定位当前城市的方法
Jul 19 Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
vue实现在线学生录入系统
May 30 Javascript
ES2020系列之空值合并运算符 '??'
Jul 22 Javascript
详解React中共享组件逻辑的三种方式
Feb 02 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
数据库相关问题
2006/10/09 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
python 实现控制鼠标键盘
2020/11/27 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
软件测试笔试题
2012/10/25 面试题
中软国际Java程序员机试题
2012/08/19 面试题
安全责任书范文
2014/03/12 职场文书
调研汇报材料范文
2014/08/17 职场文书
卖房协议书样本
2014/10/30 职场文书
中国合伙人观后感
2015/06/02 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python