问题描述
我正在学习 js,但我不明白为什么我的循环不起作用。 pos 是一个对象 {i,j}。我希望循环从 pos.i-1 开始,直到 pos.i+1 和 j 相同。 Board 是一个矩阵(表),if 语句是为了确保 i 和 j 值不超过矩阵大小,并且跳过给定位置的单元格。问题是当代码“继续”时,它会执行 i++ 或 j++,但不会返回 for 循环中的条件,而是继续运行。我很想知道为什么会这样,我可以做些什么来让它按照我需要的方式工作。
function expandShown(board,pos) {
for (var i = pos.i - 1; i <= pos.i + 1; i++) {
if (i < 0 || i >= board.length) continue;
for (var j = pos.j - 1; j <= pos.j + 1; j++) {
if (j < 0 || j >= board.length) continue;
if (i === pos.i && j === pos.j) continue;
var currCell = board[i][j];
if (!currCell.isShown) {
currCell.isShown = true;
gGame.shownCount++;
var cellToRender = document.querySelector(`#cell-${i}-${j}`);
var strToRender = (currCell.ismine) ? mine : currCell.minesAroundCount;
renderCell(cellToRender,strToRender);
}
}
}
}
解决方法
这就是继续的工作方式:https://www.w3schools.com/jsref/jsref_continue.asp
如果出现指定条件,则 continue 语句会中断一次迭代(在循环中),并继续循环中的下一次迭代。
,一个.def
语句用于停止循环当前迭代的执行,并直接跳转到下一个迭代:
continue
语句终止当前或标记循环的当前迭代中语句的执行,并在下一次迭代中继续执行循环。