解析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的内存泄漏
Mar 04 Javascript
JavaScript实现自己的DOM选择器原理及代码
Mar 04 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
Oct 29 Javascript
原生js实现移动端瀑布流式代码示例
Dec 18 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
vue页面切换过渡transition效果
Oct 08 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
jquery实现动态创建form并提交的方法示例
May 27 jQuery
解析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
linux下 C语言对 php 扩展
2008/12/14 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
Laravel 队列使用的实现
2019/01/08 PHP
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
python中元类用法实例
2014/10/10 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
五年级科学教学反思
2014/02/05 职场文书
董事长助理岗位职责
2014/02/18 职场文书
收款委托书
2014/10/14 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
地震慰问信
2015/02/14 职场文书
党校个人总结
2015/03/04 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
复兴之路展览观后感
2015/06/02 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
python代码实现备忘录案例讲解
2021/07/26 Python