有在下面的代码的错误:索引超出范围的bug在我的JavaScript代码
generate: function() {
var generated = [];
for (var j = 0; j < objectDefinitions.length; j++) {
var randomNumber;
if (!objectDefinitions[j].restrictGeneration) {
continue;
}
randomNumber = Math.random();
if (randomNumber < objectDefinitions[j].probability) {
generated.push(objectDefinitions[j].createObject());
objectDefinitions[j].restrictGeneration = true;
if (j > 5) {
}
setTimeout(function() {
//console.log(j);
objectDefinitions[j].restrictGeneration = false;
}, objectDefinitions[j].cooldown);
}
}
return generated;
}
当setTimeout的“火”的变量j为6,这将导致一个数组索引超出范围的异常,因为的阵列中只有6个项目。我真的不明白发生了什么事,我在setTimeout之外检查了j,它从不是6,但它在声明后似乎发生了变化。谢谢你的帮助。
我不知道是否有这个问题,一个更好的标题,因为这似乎是新手JS程序员一个很好的学习机会,这个问题应该被发现! –