• 对比JavaScript中的Continue和Break


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

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


    在这篇文章中,我们会详细介绍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的异同点还是很重要的,万一哪天遇到了呢。


  • 相关阅读:
    wampserver2.6下UCenter1.6.0与UCenter Home2.0整合安装
    wampserver环境下,安装ucenter1.6.0
    wampserver环境下,apache本地下设置多个域名
    sqlserver中索引优化
    wampserver,eclipse,PHPeclipse搭建php开发环境
    [phonegap]安装phonegap
    有用的开源软件
    删除用户的时候,产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法
    工作流图形设计器参考资料
    将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。
  • 原文地址:https://www.cnblogs.com/fundebug/p/8633388.html
Copyright © 2020-2023  润新知