为什么以下语句执行时没有错误?

时间:2015-01-27 07:24:43

标签: javascript

var loop = function() 
{
    outer: for(var i=0;i<4;i++)
    {
         for( var j=3;j>i; j--)
        {
           if( j == i)
              {
                 break
                 outer;
              }     
            alert("j: " + j);
       }
    }
};

代码运行正常,输出为3,2,1,3,2,3。

据了解,解释器在break语句后自动插入分号,因为'outer'标签位于下一行。但我的观点是,'外部'不是表达或陈述,而只是一个标签。它不能单独编写,因此必须使用 continue break 语句编写。那么为什么代码运行得很好而不是发出错误呢?

1 个答案:

答案 0 :(得分:3)

  

代码运行正常

我认为如果实际满足条件并且执行了break语句,那么你的例子会好得多。由于你的内部循环只运行到j>i,它们永远不会相等。也许将其更改为>=

  

&#39;外&#39;不是表达或陈述,而只是一个标签。

不。在它自己的路线上,

outer;

只是一个由单个变量组成的表达式语句。不可否认,该变量是未声明的,并且会在评估时抛出异常,但由于前面的语句已将控制权返回给循环,因此实际上从未对其进行评估。