解析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 通用javascript函数库整理
Aug 14 Javascript
extjs 初始化checkboxgroup值的代码
Sep 21 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 Javascript
jquery广告无缝轮播实例
Jan 05 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
解析JS在获取当前月的最后一天遇到的坑
Aug 30 Javascript
原生JS实现记忆翻牌游戏
Jul 31 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 clearstatcache()函数详解
2010/03/02 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
Python连接DB2数据库
2016/08/27 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
教师专业自荐书范文
2014/02/10 职场文书
ktv筹备计划书
2014/05/03 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
家长会后的感想
2015/08/11 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python