我试了一下:
for(i = 0; i < 5; i++){
for(j = i + 1; j < 5; j++){
break(2);
}
alert(1);
}
结果却得到:
SyntaxError:缺失;在声明中
那么,如何在JavaScript中打破嵌套循环呢?
我试了一下:
for(i = 0; i < 5; i++){
for(j = i + 1; j < 5; j++){
break(2);
}
alert(1);
}
结果却得到:
SyntaxError:缺失;在声明中
那么,如何在JavaScript中打破嵌套循环呢?
当前回答
至少有五种不同的方法可以打破两个或多个循环:
1)设置父循环到结束
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (j === 2)
{
i = 5;
break;
}
}
}
2)使用标签
fast:
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (j === 2)
break fast;
}
}
3)使用变量
var exit_loops = false;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (j === 2)
{
exit_loops = true;
break;
}
}
if (exit_loops)
break;
}
4)使用自执行功能
(function()
{
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (j === 2)
return;
}
}
})();
5)使用常规功能
function nested_loops()
{
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (j === 2)
return;
}
}
}
nested_loops();
其他回答
看到亚伦的。否则: J =5;i=5而不是break。
不幸的是,你必须设置一个标志或使用标签(想想老式的goto语句)
var breakout = false;
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
breakout = true;
break;
}
if (breakout) break;
alert(1)
};
标签方法如下所示:
end_loops:
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
{
break end_loops;
}
alert(1)
};
编辑:标签放置错误。
还看到:
http://www.devguru.com/Technologies/ecmascript/quickref/break.html http://www.daaq.net/old/javascript/index.php?page=js+exiting+loops&parent=js+statements
function myFunction(){
for(var i = 0;i < n;i++){
for(var m = 0;m < n;m++){
if(/*break condition*/){
goto out;
}
}
}
out:
//your out of the loop;
}
返回“break”你嵌套的for循环。
function foo ()
{
//dance:
for(var k = 0; k < 4; k++){
for(var m = 0; m < 4; m++){
if(m == 2){
//break dance;
return;
}
}
}
}
foo();
你需要命名你的外部循环并打破这个循环,而不是像这样打破你的内部循环。
outer_loop:
for(i=0;i<5;i++) {
for(j=i+1;j<5;j++) {
break outer_loop;
}
alert(1);
}