解析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 相关文章推荐
jquery imgareaselect 使用利用js与程序结合实现图片剪切
Jul 30 Javascript
jquery下jstree简单应用 - v1.0
Apr 14 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
Jan 06 Javascript
jQuery实现伸展与合拢panel的方法
Apr 30 Javascript
学习jQuey中的return false
Dec 18 Javascript
JavaScript中数组去除重复的三种方法
Apr 22 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 Javascript
javascript定时器取消定时器及优化方法
Jul 08 Javascript
angular2 ng build部署后base文件路径问题详细解答
Jul 15 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
解析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绘制一个扇形的方法
2015/01/24 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
js获取页面description的方法
2015/05/21 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
活动总结怎么写啊
2014/05/07 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
财务人员岗位职责
2015/02/03 职场文书
导游词之长城八达岭
2019/09/24 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸