以下代码中存在错误:
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,但它似乎在声明后发生了变化。谢谢你的帮助。