基本使用

continue 语句将立即结束当前迭代,开始执行下一次迭代,可以出现在 for 循环和 while 循环中。

比如:使用循环语句输出数字 1 到 10,但是数字 4 不要输出。

程序如下:

for(var i = 1 ; i <= 10 ; i++){

if(i == 4){

continue;

}

console.log(i);

}

当 i 的值是 4 时会执行语句 continue,表示立即结束本次 i=4 的这次迭代,直接开始 i=5 的迭代。所以数

字 4 就被跳过了。

使用 label 命名循环

如果循环语句进行了嵌套,那么 continue 语句默认将结束所在的最内层循环语句的本次迭代。如果要结束

外层的循环语句的本次迭代,则可以使用 label 标签,给循环语句命名,在 continue 后面空格加标签名即可。

例如程序:

outer : for(var i = 1 ; i <= 4 ; i++){

for(var j = 1 ; j <= 4 ; j++){

if(j == 2){

continue outer;

}

console.log(i,j);

}

}

外层 for 循环被添加了命名“outer”。两层 for 循环将分别引导 i 和 j 从 1 到 4 进行循环。程序的功能

是,当 j 的值是 2 的时候,则立即结束外层(被命名为 outer 的这个 for 循环)当前的迭代。

j 的初始值是 1,它不是 2,所以不会触发 continue 语句。但是下一个 j 值 2 会触发 continue 语句,此

时将立即结束外层的当前迭代。即,不管外层的 i 等于几,它内部循环只会遍历到 j=1,内层循环就结束了,开

始迭代新的 i 值。

 简化寻找质数程序

continue 语句在实际编程中应用的并不多,但是使用它确实可以使程序变得更加简洁高效。

例如可以使用 continue 语句简化寻找质数程序。代码如下:

//穷举思想

outer : for(var i = 2 ; i <= 100 ; i++){

// 判断 i 是否是质数,如果在 2 到根号 i 之间有约数就不是质数

// 如果已知 i 不是质数,没必要继续执行,可以进入下一次的 i

for(var j = 2 ; j <= Math.sqrt(i) ; j++){

if(i % j == 0){

// 需要进入 i 的下一次

continue outer;

}

}

// 如果循环结束后,一直没有遇到 continue,就能执行到该位置

// 能走到这个位置就说明没有被 continue,说明它是个质数

console.log(i);

}

程序的思想非常清晰:欲检测数字 i 是不是质数,只需要从 2 到根号 i 依次去除 i,如果除的尽,说明 i 不

是质数,则立即检测下一个数字,没有必要继续除下去了。至于 j 循环到根号 i 的原因,请读者自行思考。

本案例确实比 4.7 小节的算法效率要高,因为它不需要统计每个数字的约数个数了。

本章作业题

1.遍历下面的循环,说出它的执行结果。

for(var i = 30 ; i > 5 ; i -= 7){

console.log(i--);

}

2. 用户输入一个数字 n,计算下列算式的值:

n

n 1

4

5

3

4

2

3 

     

3. 用户输入一个数字,在控制台中输出它的所有约数。

4. 阅读下面的程序

var a = 0;

while(true){

a++;

if(a % 5 == 0 && a % 6 == 1)

break;

}

console.log(a);

试问控制台中输出什么?

5. 一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

6. 在控制台输出九九乘法表。

7. 在控制台显示 5 层的金字塔图形:

8. 《孙子算经》是大约一千五百年中国古代重要的数学著作,其中载有著名“鸡兔同笼”问题:有雉兔同笼,

上有三十五头,下有九十四足,问雉兔各几何?请编程回答这个问题。

9. 《孙子算经》中另一问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?请

编程回答这个问题。

10. 我们玩儿过的一个游戏:大家轮流报数,如果报到能被 7 整除的数字,或者尾数是 7 的数字,都算踩地雷

了。就应该罚唱歌。请在控制台输出 1~60 之间的所有“安全数”。

11.苹果 3 元一个,鸭梨 2 元一个,桃子 1 元一个。现在想用 200 元买 100 个水果,在控制台中列出所有可能性。

12.编写程序计算 1~100 之间所有含数字 6 或 9 的数之和,即 s=6+9+16+19+26+29+……60+61+……90+91+……99

13. 将 200 元换成 1 元、5 元、10 元共有多少种换法?