label语句
可以在代码中添加标签,以便使用。以下是label语句的语法:
label:statement
示例:
start:
for (var i = 0; i < count; i++) {
alert(i);
}
该示例中定义的start标签可以在以后由break或continue语句引用,加标签语句一般都要与for语句等循环语句配合使用。
break语句和continue语句
break语句和continue语句用于在循环中精确的控制代码的执行。其中,break语句会立即退出循环,强制继续执行循环后面的语句。而continue语句虽然也是立即退出循环但是退出循环后会从循环的顶部继续执行。
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>break语句</title>
<script type="text/javascript">
window.onload=function(){
var num=0;
for (var i = 1; i <10; i++) {
if (i%5==0) {
break;
}
num++;
}
alert(num);
}
</script>
</head>
<body>
</body>
</html>
test4.html
结果显示:
在这个例子中的for循环会将变量i由1递增至10.在循环体内,有一个if语句检查i的值是否可以被5整除(使用求模操作符)。如果是,则执行break语句退出循环。另一方面,变量num从0开始,用于记录执行的次数。在执行break语句之后,要执行的下一行代码是alert()函数,结果就显示是4.当然,也就是说,在变量i=5时,num++总共执行的次数为4次;而break语句的执行,导致循环在num再次递增之前就退出了。
如果这里把break替换为continue,则可以看到另一种结果:
<script type="text/javascript">
window.onload=function(){
var num=0;
for (var i = 1; i <10; i++) {
if (i%5==0) {
continue;//把break替换为continue
}
num++;
}
alert(num);
}
</script>
把break替换为continue结果之后结果显示为8,也就是num++总共执行了8次。当i=5时,循环会在num再次递增之前退出,但接下来执行的是下一次循环,即i的值等于6的循环,于是循环又继续执行,直到i等于10时自然结束。
另一个问题就是为何num最终值为8?原因是continue语句导致它少递增了一次。
break和continue语句都可以与label语句联合使用,从而返回代码中的特定位置。这种联合使用的情况多发生在循环嵌套的情况下。
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>break和continue语句与label语句联合使用</title>
<script type="text/javascript">
window.onload=function(){
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);
}
</script>
</head>
<body>
</body>
</html>
test5.html
在该示例中,outermost标签表示外部的for语句。如果每个循环正常执行10次,则num++语句就会正常执行100次。换句话说就是如果两个循环都自然结束,num的值应该是100,但由于内部循环中的break语句带一个参数:要返回到的标签。添加这个标签的结果将会导致break语句不仅会退出内部的for语句(即使用变量j的循环),而且也会退出外部for语句(即使用i的循环)。为此,当i,j都等于5时,num的值刚好等于55.同样continue也可以像这样与label语句联用哦!
<script type="text/javascript">
window.onload=function(){
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;//将break换为continue
}
num++;
}
}
alert(num);
}
</script>
结果显示:
在该情况下,continue语句会强制执行循环————退出内部循环,执行外部循环。当j是5时,continue语句执行,而这意味着内部循环少执行了5次,因此num的结果是95.