var iNum = 0;

outmost:
for(var i=0; i < 10; i++){
for(var j=0; j < 10; j++){
if(i==5 && j ==5){
break outmost;
}
iNum++;
}
} alert(iNum);
以上一小段程序中,根据我的理解break跳出来跳到outermost后再重新执行循环,运行到i==5&&j==5处再跳出来……这不久成死循环了吗……可是实际运行结果却是55;这是为什么呢?请大牛们指点一下,非常感谢!
我是看的《Javascript高级程序设计》,该例子在第49页。

解决方案 »

  1.   

    参见
    http://www.w3school.com.cn/js/as_js_statements_break-continue.asp
      

  2.   

    又不是C的goto ,不会再重新执行循环,这里直接中断整个循环块
      

  3.   

    那个网站的教程就是Copy书上的……不过谢啦~~
      

  4.   

    那为什么把outmost放到for循环的后面就运行不正常了呢~~还有为什么呀,标签明明在for语句前面……呵呵
      

  5.   

    goto 这种东西 传说要放弃 outmost 表示是下面那个FOR
      break outmost 就是 跳出那个FOR咯...
       另外.. 天下一大抄.  谁抄的谁.  谁也不知道
      

  6.   

    看下面应该比较明了..

    break
    Terminates the current while or for loop and transfers program control to the statement following the terminated loop. 
    实现版本 Navigator 2.0, LiveWire 1.0  语法
    break
    break label 
    Argument
    label Identifier associated with the label of the statement.  描述
    The break statement can now include an optional label that allows the program to break out of a labeled statement. This type of break must be in a statement identified by the label used by break. 
    The statements in a labeled statement can be of any type.
     
      

  7.   

    这个的意思是:看break
    var iNum = 0; outmost: 
    for(var i=0; i < 10; i++){ 
    for(var j=0; j < 10; j++){ 
    if(i==5 && j ==5){ 
    break outmost; 

    iNum++; 


    如果只有break,那么就应该跳出j的循环,但是如果加上break outmost; 的意思就是
    不但跳出j的循环,还要跳出i的循环,也就是结束所有的循环,所以iNum++执行了55次
    所以alert(iNum)= 55.