javascript - 两次调用方法的一部分

时间:2013-02-13 08:24:28

标签: javascript methods

我正在尝试在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

没有可理解的理由。对我来说,这没有任何意义,因为它意味着函数的底部执行了两次,尽管没有什么可以强迫这种行为。我错过了什么吗?

有关我的问题的任何提示都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

neighbours成为全局时,可能会发生在neighbourstring = 'Before:'+neighbours.length+'\n';neighbourstring += 'After:'+neighbours.length+'\n';之间的另一个函数调用正在两个赋值之间执行。用var neighbours声明它应该解决它。