方法的一部分调用了两次
part of method called twice
我正在尝试用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);
}
这是一个递归调用自己几次的函数。不过,如果你查看neighborstring,你总是会期望在末尾出现以下模式的警报:
之前:8
之后:8
几乎所有情况都是这样,但有时我会得到
之前:8
之后:8
之后:8
没有任何可以理解的原因。对我来说,这没有任何意义,因为这意味着函数的底部要执行两次,尽管没有什么可以强迫这种行为。我是不是错过了什么?
任何关于我的问题的建议都将不胜感激。
由于neighbours
是全局的,因此在neighbourstring = 'Before:'+neighbours.length+''n';
和neighbourstring += 'After:'+neighbours.length+''n';
之间,可能会在两个赋值之间执行另一个函数调用。用var neighbours
声明它应该可以解决这个问题。
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- AngularJs正在阻止链接被点击两次
- 为什么我的路线处理程序会触发两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- 在列表中至少使用两次随机生成的nr
- 检查某个键是否按下两次
- 一次点击,两次'单击'事件已启动
- 我的所有代码在使用Webpack编译时都会运行两次
- 方法的一部分调用了两次