解析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 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
用javascript getComputedStyle获取和设置style的原理
Oct 10 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
Jul 26 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
Sep 05 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 Javascript
浅析AngularJs HTTP响应拦截器
Dec 28 Javascript
拥有一个属于自己的javascript表单验证插件
Mar 24 Javascript
js时间控件只显示年月
Jan 08 Javascript
Angular中ng-bind和ng-model的区别实例详解
Apr 10 Javascript
bootstrapvalidator之API学习教程
Jun 29 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
Feb 09 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
论建造顺序的重要性
2020/03/04 星际争霸
谈一谈收音机的高放电路
2021/03/02 无线电
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
JavaScript多线程详解
2015/08/12 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Django异步任务线程池实现原理
2019/12/17 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
Django用户身份验证完成示例代码
2020/04/03 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
模具专业推荐信
2013/10/30 职场文书
外贸英语毕业生自荐信
2013/11/14 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
小学校长开学致辞
2015/07/29 职场文书
寒假生活随笔
2015/08/15 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python