次のコードにエラーがあります。
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を「起動」すると、変数jは6になります。これにより、配列には6つの項目しかないため、配列インデックスの範囲外の例外が発生します。何が起こっているのかよくわかりません。setTimeoutの外でjをチェックしましたが、6になることはありませんが、宣言後に変更されるようです。助けてくれてありがとう。