解析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 相关文章推荐
在Z-Blog中运行代码[html][/html](纯JS版)
Mar 25 Javascript
[原创]js获取数组任意个不重复的随机数组元素
Mar 15 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
Aug 11 Javascript
js密码强度校验
Nov 10 Javascript
JQuery日期插件datepicker的使用方法
Mar 03 Javascript
浅谈String.valueOf()方法的使用
Jun 06 Javascript
Javascript发送AJAX请求实例代码
Aug 21 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 Javascript
JavaScript中var、let、const区别浅析
Jun 24 Javascript
解决vue接口数据赋值给data没有反应的问题
Aug 27 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 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 将字符串按大写字母分隔成字符串数组
2010/04/30 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
三种php连接access数据库方法
2013/11/11 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
python学习基础之循环import及import过程
2018/04/22 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
小学元宵节活动总结
2015/02/06 职场文书
素质拓展训练感想
2015/08/07 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android