break和continue的区别【转】

break语句用于终止循环语句块里面的执行语句或者是switch语句,

一个没有标号(标识)的break语句,他会把控制传递给当前循环,比如while,for,

do while,还有switch结构语句中break下面的下一条语句

如果有标号(标识),那么他就会把控制传递给当前方法中(while.for.do whole.switch)

带有这一标号(标识)的循环语句后面的执行语句。也就是说:

biaohaoming:while ( true )

{

while ( true )

{

break biaohaoming;

}

}

在上面的代码中,在while循环后面有嵌套了一个while循环,当里层的while循环满足

某一条件时,程序就会跳出这整个的外边的循环,为了实现这个思想,我们就定义了

一个标号,标号的名称是我们自己命名的任意的,标号后面的语句将被终止,

在这里我们把这个标号放在第一句while(x<10)前面,也就是说当程序执行里层的while

循环的时候,当程序满足了某一条件,这个时候我们就希望推出整个外层的while循环

我们就可以把标号放在外层的while前面,这样程序就会跳过这整个的外层的循环(也

包括里层的while循环)

我们先来看一看没有标号(标识)的break的例子:



这段代码运行的结果是将会弹出5个对话框,分别显示1.2.3.4.5

我们声明了一个变量x,我们让x初始值等于1,然后是一个while循环

当x小于10的时候,我们就显示出x:alert(x);

在大括号里面还有一个前提,那就是当x大于5的时候,我们就跳出整个while循环

if(x>5) break;我们知道,程序都是按顺序执行的,所以每一次程序会先判断x是不是大于

5:if(x>5) break;。然后再运行alert(x);x++

当x等于6的时候,if(x>5)就是不成立的,所有程序就会运行if下面的break,跳出这整个

while循环,

由此我们可以知道:一个没有标号(标识)的break语句,他会把控制传递给当前的

整个循环,也就是当前的这个while循环

这个例子不怎么明显

我们来看下面这个例子:



这段代码运行的结果是将会弹出8对话框,分别显示:1.2.3.4.6.7.8.9

两个while循环嵌套在一起,当x等于5的时候,程序会执行上面那个红色的大括号里面

的句子,x++,然后跳出那个红色的while循环,这个时候x就等于5++等于6

再看这个:



我们看到这里有标号:biaoshiming,在while(x<10)的前面

也就是说当满足一定条件的时候,这整个外层的while循环将会被强制结束

在这里当x等于5的时候,程序先运行红色的x++,然后程序就会遇到break和标号名

然后程序就会去寻找这个标号的位置,找到以后就结束这个标号名的冒号所指向的句子

(红色部分的alert(x);不会被执行了,因为他前面有个break)

所以程序就会跳出这整个的外层的while循环,也包括里层的while循环,

所以这段代码运行的结果就是弹出4个对话框,分别显示:1.2.3.4

continue语句:出现在for.while,do while,if,等结构的循环

提语句块当中无标号的continue语句的作用是跳过当前这一

次循环的剩余语句,然后接着再进行下一次新的循环

例如:我们让程序显示出从0到10的所有的奇数



我们来分析一下这段代码:



因为我们需要的是显示出从0到10的奇数,当x除以2的值是偶数的时候,

程序就会碰到continue,然后程序就会不去执行下面的st = st+x;x++

而是重新回到for(var x = 0;x<10;x++),还是和以前的for循环一样,再一次循环

是先运行x++,再运行x《10,然后再进入大括号,继续运行

只有当x除以2不等于0的时候,才为奇数,因为我们要的是奇数

所以x除以2等于0是偶数的时候就不管,什么也不作

x除以2不等于0的时候,这个时候x是奇数,就执行str = str+x,然后再回过头

来继续执行for循环。

这个程序执行的结果就是将会弹出一个对话框,显示:13579

你可能感兴趣的:(C#,javascript)