解析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 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
May 07 Javascript
JavaScript学习笔记之定时器
Jan 22 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
JS日期格式化之javascript Date format
Oct 01 Javascript
Jquery日历插件制作简单日历
Oct 28 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
三种带箭头提示框总结实例
Jun 14 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
JS实现transform实现扇子效果
Jan 17 Javascript
vue-router的hooks用法详解
Jun 08 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
php中计算时间差的几种方法
2009/12/31 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php模拟post提交数据的方法
2015/02/12 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
Angular实现响应式表单
2017/08/04 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python读取oracle函数返回值
2016/07/18 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
pytorch之添加BN的实现
2020/01/06 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
python asyncio 协程库的使用
2021/01/21 Python
印度网上药店:1mg
2017/10/13 全球购物
项目申请汇报材料
2014/08/16 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
委托培训协议书
2014/11/17 职场文书
收费员岗位职责
2015/02/14 职场文书
会计工作能力自我评价
2015/03/05 职场文书