我正在尝试在 javascript 中编写一个自定义的、简单的高度图生成。到目前为止,我已经完成了代码,但我遇到了一些非常奇怪的事情,阻碍了我的前进。我不确定这是一个错误还是我只是瞎了眼。部分代码如下:
function fillNeighboursHill(life) {
//...
life--;
neighbours = this.getNeighbours();
neighbourstring = 'Before:'+neighbours.length+'\n';
for (var i=0; i < neighbours.length; i++) {
//do something
neighbours[i].fillNeighboursHill(life);
}
neighbourstring += 'After:'+neighbours.length+'\n';
alert(neighbourstring);
}
这是一个递归调用自身几次的函数。但是,如果您查看 neighbourstring,您将始终期望在此模式的末尾出现警报:
之前:8
之后:8
几乎所有情况都是这种情况,但有时我会得到
之前:8
之后:8
之后:8
没有可以理解的原因。对我来说,这没有任何意义,因为这意味着函数的底部会执行两次,尽管没有什么可以强迫这种行为。我错过了什么吗?
任何关于我的问题的提示将不胜感激。