gpt4 book ai didi

javascript - 我的 JavaScript 代码中的索引越界错误

转载 作者:行者123 更新时间:2023-11-28 02:27:41 24 4
gpt4 key购买 nike

以下代码有错误:

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,但它在声明后似乎发生了变化。感谢您的帮助。

最佳答案

它读取的变量j是您在循环中使用的变量,因此它没有被“复制”。

setTimeout(
(function(k){
return function() {
objectDefinitions[k].restrictGeneration = false;
};
}(j))
, objectDefinitions[j].cooldown);

这样,您的j就会被复制到k变量中。但循环的每次迭代都有一个 k 变量。

关于javascript - 我的 JavaScript 代码中的索引越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com