译者按: 最好是不用,不过基础知识要掌握。

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

在这篇文章中,我们会详细介绍continuebreak,分析它们的相同和不同之处,甚至用一些可运行的实例。

continuebreak都是用于控制循环的。我们先来看一下他们的定义:

  • Continue: 结束当前的执行,并继续下一个循环。
  • Break: 终止整个循环的执行。

注意:break还可以用在switch中,本文主要介绍在循环中的使用。

Continue

考虑如下代码:

for (let i = 1; i <= 10; i++){
console.log(i);
}

我们有一个简单的for循环,该循环会执行10次,i的值从1一直递增到10。每一次循环将当前i的值打印出来。执行结果如下:

1
2
3
4
5
6
7
8
9
10

如果我们只想打印偶数,应该如何做呢?使用continue可以很容易搞定。在每一次循环我们检查是否为奇数,如果是,则跳出此次循环,继续下一次。如果不是,则打印i的值。

for (let i = 1; i <= 10; i++){
if (i % 2 == 1) continue;
console.log(i);
}

执行结果如下:

2
4
6
8
10

记住,当使用continue关键字的时候,该次循环立即结束执行,continue往后的代码不再被执行。

Break

我们使用相同的循环来做例子:

for (let i = 1; i <= 10; i++){
console.log(i);
}

如果我们想在i的值为6的时候,终止整个循环。那么我们可以使用break

for (let i = 1; i <= 10; i++){
if (i == 6) break;
console.log(i);
}

如果执行上面的代码,for循环会在i为6的时候终止执行,因此6也不会被打印到控制台。

1
2
3
4
5

JavaScript太灵(gui)活(yi)了,出了BUG你也不知道,不妨接入Fundebug线上实时监控

嵌套For循环

值得注意的是,breakcontinue都只对当前循环有效。如果我们有嵌套循环,那么就要很小心了。不妨来看下面的例子:

for (let i = 0; i < 5; i++) {
if (i % 2 == 0) continue;
for (let j = 0; j < 5; j++) {
if (j == 2) break;
console.log(`i = ${i}, j = ${j}`);
}
}

这里我们有两个循环,每一个都会执行5次(0~4)。外层的循环在i是偶数的时候,跳过当前循环执行下一个。也就是说只有i为1或则3的时候,才会执行内层的循环。

内层的循环只要j的值为2,就终止了。因此,j只有0和1。

最终结果如下:

i = 1, j = 0
i = 1, j = 1
i = 3, j = 0
i = 3, j = 1

评论精选

  • [Nicu Micleușanu]:最好的策略是break和continue都不要用。如果你用了,证明你哪里搞错了,尝试换个方法。

  • [Brandon Morelli]: 我同意用函数式的方法更好,来避免使用for循环。不过呢,理解continuebreak的异同点还是很重要的,万一哪天遇到了呢。

版权声明:
转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/03/05/javascript-continue-vs-break/

对比JavaScript中的Continue和Break的更多相关文章

  1. Java中关键字continue、break和return的区别

    Java中关键字continue.break和return的区别: continue:跳出本次循环继续下一次循环 break:   跳出循环体,继续执行循环外的函数体 return:   跳出整个函数 ...

  2. javaScript中的return,break,continue的区别

    导语: javaScript中有三种方法可以跳出循环或者终止循环.分别为break.return.continue. 正文: 一.break break 会使得整个程序终止执行或者包含了最内层的循环或 ...

  3. JS中的continue,break,return的区别

    关于continue.break.return的用法区别早在大一C语言学习中研究过,这里单独拿出来,总结一下. 还是来点实在的吧,上代码 <!DOCTYPE html PUBLIC " ...

  4. SQL中的Continue和Break

    x 在Sql Server中,sql语句包含While循环的时候,肯定都或多或少的用到Continue和Break... 下面撸了一个小Demo , Begin ),@Index) Begin Pri ...

  5. javascript笔记——jquery.each中使用continue和break的方式

    jQuery.each中continue的方式是 return  true  break 的方式是return false

  6. 【转】jQuery each函数中的continue及break

    continue :return true; break :return false; 也可以利用return即可跳出jQuery 来源:http://bie.xiaowangge.info/brow ...

  7. shell脚本--continue、break

    shell中的continue和break和其他语言中的使用方法一模一样:continue用于跳过本次循环,break用于中断本层的循环 下面是使用例子: #!/bin/bash #文件名:test. ...

  8. PHP continue和break的用法(深入理解)

    对于刚入门的PHP童鞋们来说,在循环体中的continue和break的作用总是分不清到底是什么意思, 怎么用, 两者到底有什么区别? 接下来说几个例子,其实它们是很好区分的. <?php $t ...

  9. javascript 中break、 continue、函数不能重载

    在javascript中,break与continue有着显著的差别. 如果遇到break语句,会终止最内层循环,无论后面还有多少计算. 如果遇到continue,只会终止此次循环,后面的自循环依然执 ...

随机推荐

  1. [Swift]Alamofire:设置网络请求超时时间【timeout】的两种方式

    两种方式作用相同,是同一套代码的两种表述. 第一种方式:集聚. 直接设置成员属性(全局属性),这种方法不能灵活修改网络请求超时时间timeout. 声明为成员属性: // MARK: - 设置为全局变 ...

  2. Python安装模块的几种方法

    一.方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:python setup.py i ...

  3. python高级-面向对象特性(12)

    一.继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产,在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物:同理,波斯猫和巴厘猫都继承自猫,而沙 ...

  4. Zookeeper-watcher机制源码分析(二)

    服务端接收请求处理流程 服务端有一个NettyServerCnxn类,用来处理客户端发送过来的请求 NettyServerCnxn public void receiveMessage(Channel ...

  5. Unity 5 使用Roslyn编译器支持C# 7

    Unity 2017可选使用新的Mono编译器,支持.NET 4.6和C# 6,解决bug的同时,代码优化更佳. Unity 5可以使用社区开源方案:https://bitbucket.org/ale ...

  6. mysql 开发进阶篇系列 54 权限与安全(账号管理的各种权限操作 下)

    1. 查看权限 -- 如果host值不是%, 就要加上host值,下面查看bkpuser用户权限(6个权限, 限本地连接) SHOW GRANTS FOR bkpuser@localhost; -- ...

  7. mysql 开发进阶篇系列 8 锁问题 (共享锁与排它锁演示)

    1 .innodb 共享锁(lock in share mode)演示 会话1 会话2 SET autocommit=0; SELECT cityname FROM  city WHERE city_ ...

  8. sql server 索引阐述系列三 表的堆组织

    一.   概述 这一节来详细介绍堆组织,通过讲解堆的结构,堆与非聚集索引的关系,堆的应用场景,堆与聚集索引的存储空间占用,堆的页拆分现象,最后堆的使用建议 ,这几个维度来描述堆组织.在sqlserve ...

  9. [ Talk is Cheap Show me the CODE ] : jQuery Mobile页面布局

    当我们专注地研究人类生活的空虚,并考虑荣华富贵空幻无常时,也许我们正在阿谀逢迎自己懒惰的天性. Written In The Font 为了app的手机端,我选择了 jQuery Mobile  ,学 ...

  10. eclipse中打断点debug无效

    今天在测试的时候,发现在eclipse中打了断点,debug居然无效.结果是因为我无意开启了另一个功能,Run-->Skip All Breakpoints (忽略所有的断点) 快捷键:Ctrl ...