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 语句编写。那么为什么代码运行得很好而不是发出错误呢?
答案 0 :(得分:3)
代码运行正常
我认为如果实际满足条件并且执行了break语句,那么你的例子会好得多。由于你的内部循环只运行到j>i
,它们永远不会相等。也许将其更改为>=
。
&#39;外&#39;不是表达或陈述,而只是一个标签。
不。在它自己的路线上,
outer;
只是一个由单个变量组成的表达式语句。不可否认,该变量是未声明的,并且会在评估时抛出异常,但由于前面的语句已将控制权返回给循环,因此实际上从未对其进行评估。