解析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面向对象之二 命名空间
Feb 08 Javascript
深入理解javascript构造函数和原型对象
Sep 23 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
Nov 23 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
快速学习jQuery插件 Cookie插件使用方法
Dec 01 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
Jan 12 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
Feb 09 Javascript
Angularjs cookie 操作实例详解
Sep 27 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
node.js环境搭建图文详解
Sep 19 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
Vue SPA 首屏优化方案
Feb 26 Vue.js
解析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
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
List Installed Hot Fixes
2007/06/12 Javascript
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
详解Sticky Footer 绝对底部的两种套路
2017/11/03 HTML / CSS
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
计算机网络专业推荐信
2013/11/24 职场文书
个人实习生的自我评价
2014/02/16 职场文书
摩登时代观后感
2015/06/03 职场文书
九九重阳节致辞
2015/07/31 职场文书
详解Python如何批量采集京东商品数据流程
2022/01/22 Python