关于while循环里嵌套for循环出现break的问题

JackieChang_ 2015-11-18 04:39:49
当for循环被嵌套在while循环里且 for循环里出现了break(且若该语句被执行到时),是否两个循环一同跳出,还是只跳出for循环,为什么?
var i = 0, finished = false;
while (i < seats.length && !finished) {
for (var j = 0; j < seats[i].length; j++) {
if (seats[i][j] && seats[i][j + 1] && seats[i][j + 2]) {
selSeat = i * seats[i].length + j;
document.getElementById("seat" + (i * seats[i].length + j)).src = "seat_select.png";
document.getElementById("seat" + (i * seats[i].length + j)).alt = "Your seat";
document.getElementById("seat" + (i * seats[i].length + j + 1)).src = "seat_select.png";
document.getElementById("seat" + (i * seats[i].length + j + 1)).alt = "Your seat";
document.getElementById("seat" + (i * seats[i].length + j + 2)).src = "seat_select.png";
document.getElementById("seat" + (i * seats[i].length + j + 2)).alt = "Your seat";
var accept = confirm("Seats " + (j + 1) + " through " + (j + 3) +
" in Row " + (i + 1) + " are available. Accept?");
if (accept) {
// The user accepted the seats, so we're done (break out of the inner loop)
finished = true;
break;
}
else {
// The user rejected the seats, so clear the seat selection and keep looking
selSeat = -1;
document.getElementById("seat" + (i * seats[i].length + j)).src = "seat_avail.png";
document.getElementById("seat" + (i * seats[i].length + j)).alt = "Available seat";
document.getElementById("seat" + (i * seats[i].length + j + 1)).src = "seat_avail.png";
document.getElementById("seat" + (i * seats[i].length + j + 1)).alt = "Available seat";
document.getElementById("seat" + (i * seats[i].length + j + 2)).src = "seat_avail.png";
document.getElementById("seat" + (i * seats[i].length + j + 2)).alt = "Available seat";
}
}//整个if语句的结束位置
}//for循环的结束位置

// Increment the outer loop counter
i++;
}//整个while循环的结束位置
——————代码源自head first javascript书籍
...全文
1979 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JackieChang_ 2015-11-18
  • 打赏
  • 举报
回复
问题解决了 大家提出的建议也让我学到了些新的知识 谢谢你们
天际的海浪 2015-11-18
  • 打赏
  • 举报
回复
只写break是跳出最近的一层循环。 可以为循环语句设置一个标识符。 用 break 标识符; 可以跳出指定的那一层循环
aa: for (var i = 0; i < 100; i++) {
	alert(1);
	while (true) {
		alert(2);
		break aa;
	}
	alert(3);
}
alert(4);
erstens 2015-11-18
  • 打赏
  • 举报
回复
break跳出当前循环,如果不想用return结束方法,可以用开关来判断跳出外层循环
JackieChang_ 2015-11-18
  • 打赏
  • 举报
回复
嗯 可是为什么建议使用return呢?
Go 旅城通票 2015-11-18
  • 打赏
  • 举报
回复
break只跳出最近的一个循序(for或者while),你要退出用return,不要用break

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧