×

ECMAScript 基础

ECMAScript 语法ECMAScript 变量ECMAScript 关键字ECMAScript 保留字ECMAScript 原始值和引用值ECMAScript 原始类型ECMAScript 引用类型

ECMAScript 运算符

ECMAScript 位运算符ECMAScript Boolean 运算符ECMAScript 乘性运算符ECMAScript 加性运算符ECMAScript 关系运算符ECMAScript 等性运算符ECMAScript 条件运算符ECMAScript 赋值运算符ECMAScript 逗号运算符

ECMAScript 语句

ECMAScript if 语句ECMAScript 迭代语句ECMAScript 标签语句ECMAScript break & continueECMAScript with 语句ECMAScript switch 语句

ECMAScript 函数

ECMAScript 函数概述ECMAScript arguments 对象ECMAScript Function 对象ECMAScript 闭包(closure)

ECMAScript 对象

ECMAScript 面向对象技术ECMAScript 对象应用ECMAScript 对象类型ECMAScript 对象作用域ECMAScript 定义类或对象ECMAScript 修改对象

ECMAScript 继承

ECMAScript 继承机制实例ECMAScript 继承机制实现

ECMAScript 6 入门

ECMAScript 6 简介ECMAScript 6 let和const命令ECMAScript 6 变量的解构赋值ECMAScript 6 字符串的扩展ECMAScript 6 正则的扩展ECMAScript 6 数值的扩展ECMAScript 6 数组的扩展ECMAScript 6 函数的扩展ECMAScript 6 对象的扩展ECMAScript 6 SymbolECMAScript 6 Proxy和ReflectECMAScript 6 二进制数组ECMAScript 6 Set 和 MapECMAScript 6 Iterator和for...of循环ECMAScript 6 Generator 函数ECMAScript 6 Promise对象ECMAScript 6 异步操作和Async函数ECMAScript 6 ClassECMAScript 6 修饰器(Decorator)ECMAScript 6 ModuleECMAScript 6 编程风格读懂 ECMAScript 规格ECMAScript 6 参考链接

ECMAScript break 和 continue 语句


break 和 continue 语句对循环中的代码执行提供了更严格的控制。

break 和 continue 语句的不同之处

break 语句可以立即退出循环,阻止再次反复执行任何代码。

而 continue 语句只是退出当前循环,根据控制表达式还允许继续进行下一次循环。

例如:

var iNum = 0;

for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	//输出 "4"

在以上代码中,for 循环从 1 到 10 迭代变量 i。在循环主体中,if 语句将(使用取模运算符)检查 i 的值是否能被 5 整除。如果能被 5 整除,将执行 break 语句。alert 显示 "4",即退出循环前执行循环的次数。

如果用 continue 语句代替这个例子中的 break 语句,结果将不同:

var iNum = 0;

for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	//输出 "8"

这里,alert 将显示 "8",即执行循环的次数。可能执行的循环总数为 9,不过当 i 的值为 5 时,将执行 continue 语句,会使循环跳过表达式 iNum++,返回循环开头。

与有标签的语句一起使用

break 语句和 continue 语句都可以与有标签的语句联合使用,返回代码中的特定位置。

通常,当循环内部还有循环时,会这样做,例如:

var iNum = 0;

outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    break outermost;
  }
  iNum++;
  }
}

alert(iNum);	//输出 "55"

在上面的例子中,标签 outermost 表示的是第一个 for 语句。正常情况下,每个 for 语句执行 10 次代码块,这意味着 iNum++ 正常情况下将被执行 100 次,在执行完成时,iNum 应该等于 100。这里的 break 语句有一个参数,即停止循环后要跳转到的语句的标签。这样 break 语句不止能跳出内部 for 语句(即使用变量 j 的语句),还能跳出外部 for 语句(即使用变量 i 的语句)。因此,iNum 最后的值是 55,因为当 i 和 j 的值都等于 5 时,循环将终止。

可以以相同的方式使用 continue 语句:

var iNum = 0;

outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    continue outermost;
  }
  iNum++;
  }
}

alert(iNum);	//输出 "95"

在上例中,continue 语句会迫使循环继续,不止是内部循环,外部循环也如此。当 j 等于 5 时出现这种情况,意味着内部循环将减少 5 次迭代,致使 iNum 的值为 95。

提示:可以看出,与 break 和 continue 联合使用的有标签语句非常强大,不过过度使用它们会给调试代码带来麻烦。要确保使用的标签具有说明性,同时不要嵌套太多层循环。

提示:想了解什么是有标签语句,请阅读 ECMAScript 标签语句 这一节。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)