解析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 相关文章推荐
给网站上的广告“加速”显示的方法
Apr 08 Javascript
给ListBox添加双击事件示例代码
Dec 02 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
原生javascript获取元素样式
Dec 31 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
Oct 09 Javascript
总结JavaScript三种数据存储方式之间的区别
May 03 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
Jun 22 Javascript
javascript和php使用ajax通信传递JSON的实例
Aug 21 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
Feb 25 Javascript
js实现车辆管理系统
Aug 26 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
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
python利用datetime模块计算时间差
2015/08/04 Python
python魔法方法-自定义序列详解
2016/07/21 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python交互式图形编程实例(一)
2017/11/17 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
详解django2中关于时间处理策略
2019/03/06 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
写自荐信有哪些不宜?
2013/10/17 职场文书
促销活动策划方案
2014/01/12 职场文书
新年爱情寄语
2014/04/08 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
实验心得体会范文
2016/01/25 职场文书
2019银行竞聘书
2019/06/21 职场文书
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
LeetCode189轮转数组python示例
2022/08/05 Python