JavaScript中的标签语句

有标签的语句

可以用下列语句给语句加标签,以便以后调用:

label : statement

例如:

start : i = 5;

在这个例子中,标签 start 可以被之后的 break 或 continue 语句引用。


与有标签的语句一起使用

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 联合使用的有标签语句非常强大,不过过度使用它们会给调试代码带来麻烦。要确保使用的标签具有说明性,同时不要嵌套太多层循环。


outerloop:  
      	for (var i = 0; i < 10; i++)  
      	{  
          	innerloop:   
          	for (var j = 0; j < 10; j++)  
            {  
                if (j > 3)  
                {  
                    break;  
                }  
                if (i == 2)  
                {  
                    break innerloop;  
                }  
                if (i == 4)  
                {  
                    break outerloop;  
                }  
                document.write("i=" + i + " j=" + j + "<br>");  
            }  
      	} 
      	//输出: 过滤掉了i=2
      	i=0 j=0
		i=0 j=1
		i=0 j=2
		i=0 j=3
		i=1 j=0
		i=1 j=1
		i=1 j=2
		i=1 j=3
		i=3 j=0
		i=3 j=1
		i=3 j=2
		i=3 j=3


猜你喜欢

转载自blog.csdn.net/hefeng6500/article/details/79131086