JavaScript跳出循环的三种方法(break, return, continue)


Posted in Javascript onJuly 30, 2019

前言:

一位前端界的大神让我去思考的一个问题, 给了Big-man一段代码,如下:

function Seriously(options) {
  // if called without 'new', make a new object and return that
  if(window === this || !(this instanceof Seriously) || this.id !== undefined) {
    return new Seriously(options);
  }
}

return语句执行之后还会继续执行吗?这是大神上来让我解决的问题,既然提到了return那我也就随带解决JS中另外的两种结束循环的方法break, continue。

Break语句:

  • break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。
  • 由于它是用来退出循环或者switch语句的, 所以只有当它出现在这些语句的时候, 这种形式的break语句才是合法的。
  • 如果一个循环的终止条件非常复杂, 那么使用break语句来实现某些条件比用一个循环表达式所有的条件容易得多。
for(var i = 519; i < 550; i++) {
  if(i == 522) {
    break;
  }
  console.log(i);
  alert(i);
  document.write(i);
}
  • 当i = 521的时候,直接退出for这个循环。这个循环将不再被执行。
  • 对于输出结果的话,可以自己去测试的吧。

Continue语句:

  • continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。
  • continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内, 在其他地方使用都会引起错误?
for(var i = 5; i >=0; i--) {
  if(i == 4 || i == 3 || i == 1) {
    continue;
  }
  console.log(i);
  alert(i);
  document.write(i);
}
  • 当i = 4、i = 3以及i = 1的时候,直接跳出for循环。下次继续执行。
  • 至于输出结果,还希望大家去打印一下。

Return语句:

return语句就是用于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地方造成语法错误!

for(var i = 1; i < 10; i++) {
  if(i == 8) {
    return;
  }
  console.log(i);
  alert(i);
  document.write(i);
}

执行结果Uncaught SyntaxError: illegal return statement(...)

  • 错误意思是非法捕获的查询返回语句。

当执行return语句时, 即使函数主题中还有其他语句, 函数执行也会停止!

<script type="text/javascript">
  if(username == "") {
    alert("please input your username: ");
    return false;
  } else if (qq == "") {
    alert("please input your qq number: ");
    return false;
  }
</script>

上面的实例里,当username为空时,就不会再向下执行,在一些表单提交中,也可以通过return false来阻止默认的提交方式,改用Ajax的提交方式,例如:

<form id="form" onSubmit="return false">
...
</form>

this对应的全局变量:

window == this这个Boolean等式,在不同的情况下的展现都不一样的。

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>

<body>
<script type="text/javascript">
  function a() {
    console.log(window === this)
  }
  a();
</script>
</body>
</html>

这个时候的window === this打印出来的是true,这也就意味着this绝对等于window。

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>

<body>
<script type="text/javascript">
  'use strict'
  function a() {
    console.log(window === this)
  }
  a();
</script>
</body>
</html>

这个时候window === this返回回来的值却是false, 而且打印出来的this是undefined的。

所以严格模式下面的代码操作需要更加的规范和合理才可以的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
动态调用css文件——jquery的应用
Feb 20 Javascript
javascript css在IE和Firefox中区别分析
Feb 18 Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
Dec 16 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 Javascript
多种JQuery循环滚动文字图片效果代码
Jun 23 Javascript
js中获取时间new Date()的全面介绍
Jun 20 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
Nov 15 Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 Javascript
解决vue项目中出现Invalid Host header的问题
Nov 17 Javascript
8个有意思的JavaScript面试题
Jul 30 #Javascript
开源一个微信小程序仪表盘组件过程解析
Jul 30 #Javascript
原生js添加一个或多个类名的方法分析
Jul 30 #Javascript
vue2.0项目集成Cesium的实现方法
Jul 30 #Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 #Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 #Javascript
JS实现点击发送验证码 xx秒后重新发送功能
Jul 30 #Javascript
You might like
深入理解PHP原理之异常机制
2010/08/21 PHP
php与paypal整合方法
2010/11/28 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
js选项卡的制作方法
2017/01/23 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
承诺书模板
2014/08/30 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
服务员态度差检讨书
2014/10/28 职场文书
小爸爸观后感
2015/06/15 职场文书
技能培训通讯稿
2015/07/18 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
初二数学教学反思
2016/02/17 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
各种货币符号快捷输入
2022/02/17 杂记
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers