javascript的break与continue语句

发布时间:2020-12-28编辑:脚本学堂
本文详细介绍了javascript中break 和 continue 语句的用法,有需要的朋友参考下吧,希望对大家有所帮助。

javascript中的breakcontinue语句,与其它语言中的类似语句一样,都是用于在循环中精确地控制代码的执行。

其中,break语句会立即退出循环,强制继续执行循环后面的语句。
而continue语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。

例子:
 

复制代码 代码示例:
var num = 0;
for (var i = 1; i < 10; i++) {
    if (i % 5 == 0) {
        break;
    }
    num++;
}
alert(num);    //4

以上例子,使用for循环将变量i由1递增至10.在循环体内,有一个if语句检查i的值是否可以被5整除(使用求模操作符)。
如果是,则执行break语句退出循环。

另外,变量num从0开始,用于记录循环执行的次数。
在执行brak语句之后,要执行的下一行代码是alert()函数,结果显示4。
即在变量i等于5时,循环总共执行了4次;而brak语句的执行,导致了循环在num再次递增之前就退出了。
如果在这里把break替换为continue的话,则可以看到另一种结果:
 

复制代码 代码示例:
var num = 0;
for (var i = 1; i < 10; i++) {
    if (i % 5 == 0) {
        continue;
    }
    num++
}
alert(num)    //8

结果显示8,也就是循环总共执行了8次。
当变量i=5时,循环会在num再次递增之前退出,但接下来执行的是下一次循环,即i的值等于6的循环。
于是,循环有继续执行,直到i等于10时自然结束。而num的最终值之所以是8,是因为continue语句导致它少递增了一次。
break和continue语句都可以与label语句联合使用,从而返回代码中特定的位置。

这种联合使用的情况多发生在循环套的情况下。
例子:
 

复制代码 代码示例:
var num = 0;
outermost: for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        if (i == 5 && j == 5) {
            break outermost;
        }
        num++;
    }
}
alert(num);    //55

说明:
outermost标签表示外部的for语句。如果每个循环正常执行10次,则num++语句就会正常执行100次。
即,如果两个循环都自然结束,num的值应该是100.但内部循环中的break语句带了一个参数:要返回的标签。
添加这个标签的结果就导致break语句不仅会退出内部的for语句(即使变量j的循环),而且也会退出外部的for语句(即使用变量i的循环)。
为此,当变量i和j都等于5时,num的值正好是55。
同样,continue语句也可以想这样与label语句联用。
例子:
 

复制代码 代码示例:
var num = 0;
outermost: for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        if (i == 5 && j == 5) {
            continue outermost;
        }
        num++;
    }
}
alert(num);    //95

在这种情况下,continue语句会强制继续执行循环——退出内部循环,执行外部循环,当j是5时,continue语句执行,而这也就是意味着内部循环少执行了5次,因此num的结果是95。
虽然联用break、continue和label语句能够执行复杂的操作,但如果使用过度,也就会给调试带来麻烦。
建议:如果使用label语句,一定要使用描述性的标签,同时不要嵌套过多的循环。