解析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 相关文章推荐
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
jQuery Validation插件remote验证方式的Bug解决
Jul 01 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
Jun 11 Javascript
JS获取表格内指定单元格html内容的方法
Mar 31 Javascript
JavaScript中使用数组方法汇总
Feb 16 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
实例详解display:none与visible:hidden的区别
Mar 30 Javascript
详解jquery选择器的原理
Aug 01 jQuery
基于canvas实现手写签名(vue)
May 21 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 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
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
2020/02/28 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
英文求职信结束语大全
2013/10/26 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
党纪处分决定书
2015/06/24 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
MySQL多表查询机制
2022/03/17 MySQL
德劲DE1102数字调谐收音机机评
2022/04/07 无线电