解析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 利用Cookie记录用户登录信息
Dec 08 Javascript
js几个验证函数代码
Mar 25 Javascript
JavaScript初学者应注意的七个细节详细介绍
Dec 27 Javascript
js获取url传值的方法
Dec 18 Javascript
使用Web Uploader实现多文件上传
Jun 08 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
node.js中fs.stat与fs.fstat的区别详解
Jun 01 Javascript
js获取地址栏参数的两种方法
Jun 27 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
Feb 15 Javascript
Javascript地址引用代码实例解析
Feb 25 Javascript
Js利用正则表达式去除字符串的中括号
Nov 23 Javascript
JavaScript继承的三种方法实例
May 12 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
php array_walk() 数组函数
2011/07/12 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
PHP获取文件行数的方法
2015/06/10 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
小学教师事迹材料
2014/01/13 职场文书
教师辞职报告范文
2014/01/20 职场文书
校本教研活动总结
2014/07/01 职场文书
销售助理岗位职责
2015/02/11 职场文书
思想工作总结范文
2015/08/12 职场文书
旅游安全责任协议书
2016/03/22 职场文书