Javascript函数中的递归结束过快
我目前正在通过从头开始重新制作游戏来学习JavaScript,我目前的项目是扫雷。在尝试创建递归函数以显示单击空间周围的空间时,我遇到了这样一个问题:它似乎无缘无故地过早结束 您可以在此处阅读整个代码(到目前为止): 或仅参考以下独立功能:Javascript函数中的递归结束过快,javascript,recursion,minesweeper,Javascript,Recursion,Minesweeper,我目前正在通过从头开始重新制作游戏来学习JavaScript,我目前的项目是扫雷。在尝试创建递归函数以显示单击空间周围的空间时,我遇到了这样一个问题:它似乎无缘无故地过早结束 您可以在此处阅读整个代码(到目前为止): 或仅参考以下独立功能: function showAdjacent(block) { if(block.minesNextTo != 0) return; console.log(block.row+','+block.col); block.uncover
function showAdjacent(block) {
if(block.minesNextTo != 0)
return;
console.log(block.row+','+block.col);
block.uncovered = true;
block.hidden = false;
console.log(block.adjacentBlocks.length);
for(i = 0; i < block.adjacentBlocks.length; i++)
block.adjacentBlocks[i].hidden = false;
for(i = 0; i < block.adjacentBlocks.length; i++) {
if(!block.adjacentBlocks[i].uncovered)
showAdjacent(block.adjacentBlocks[i]);
}
}
功能显示相邻(块){
如果(block.minesnexto!=0)
返回;
log(block.row+','+block.col);
block.uncovered=true;
block.hidden=false;
console.log(block.adjacentBlocks.length);
对于(i=0;i
(是的,我知道此函数不应仅在块旁边有零地雷时触发,这更便于测试)您需要将
I
声明为局部变量:
var i;
在函数的顶部将执行此操作。实际上,它是隐式的全局的,因此递归调用会弄乱父上下文中
i
的值。非常感谢!我现在正大声笑着说,这是多么愚蠢的一个错误,它是如何在这么长的时间里被发现的!