我试了一下:
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中打破嵌套循环呢?
当前回答
封装一个自执行函数并返回
(function(){
for(i=0;i<5;i++){
for (j=0;j<3;j++){
//console.log(i+' '+j);
if (j == 2) return;
}
}
})()
其他回答
不幸的是,你必须设置一个标志或使用标签(想想老式的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 foo () {
dance:
for (var k = 0; k < 4; k++) {
for (var m = 0; m < 4; m++) {
if (m == 2) {
break dance;
}
}
}
}
至少有五种不同的方法可以打破两个或多个循环:
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。
你需要命名你的外部循环并打破这个循环,而不是像这样打破你的内部循环。
outer_loop:
for(i=0;i<5;i++) {
for(j=i+1;j<5;j++) {
break outer_loop;
}
alert(1);
}