解析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跨域刷新实现代码
Jan 01 Javascript
JavaScript中的全局对象介绍
Jan 01 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
学习JavaScript设计模式(策略模式)
Nov 26 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
JavaScript的setter与getter方法
Nov 29 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
Jan 21 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
JS文件中加载jquery.js的实例代码
May 05 jQuery
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
微信小程序实现搜索功能
Mar 10 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
解析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(视频)Http下载
2006/12/12 PHP
php基础学习之变量的使用
2011/06/09 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Python中的高级数据结构详解
2015/03/27 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
小学英语教学反思
2014/01/30 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
上诉答辩状范文
2015/05/22 职场文书
无房证明样本
2015/06/17 职场文书
环境卫生标语
2015/08/03 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript
java代码实现空间切割
2022/01/18 Java/Android
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏
关于Redis的主从复制及哨兵问题
2022/06/16 Redis