为什么我的 for 循环在“继续”之后没有重新评估条件?

问题描述

我正在学习 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 语句终止当前或标记循环的当前迭代中语句的执行,并在下一次迭代中继续执行循环。

——MDN Web Docs