gpt4 book ai didi

Javascript for 循环提前结束

转载 作者:行者123 更新时间:2023-11-28 01:43:07 27 4
gpt4 key购买 nike

我正在 dojo 中编写一个应用程序,并尝试执行以下代码:

/*for (i = 0; i < mainProperties.calendar.store.data.length; i++) {
console.log("render loop " + i);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[i]);
console.log(mainProperties.calendar.store.data.length);
}*/

mainProperties.calendar.store.put(mainProperties.calendar.store.data[0]);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[1]);

mainProperties.calendar.store.data 只是一个包含 json 元素的数组。 for 循环正确运行第一个元素,分别将“渲染循环 0”和“2”记录到控制台。但是,for 循环随后结束,不再执行第二次。

我运行了底部两行代码,以确保这不是元素本身的问题,并且都正确执行。大家有什么建议吗?

顺便说一句,我使用此代码在从数据库中提取元素后重新启动渲染器。这是 DojoX 日历小部件的修改版本。

最佳答案

(将其移至评论的答案)。

如果没有看到更多代码,很难说,但我怀疑这是一个范围问题。循环内部的某些内容可能正在设置 i 的值,这会导致循环提前退出。

您需要确保做的是声明将要使用它们的函数中的变量。而不是这个:

for (i = 0; i < mainProperties.calendar.store.data.length; i++) {
console.log("render loop " + i);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[i]);
console.log(mainProperties.calendar.store.data.length);
}

这样做:

var i; // <- declare here
for (i = 0; i < mainProperties.calendar.store.data.length; i++) {
console.log("render loop " + i);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[i]);
console.log(mainProperties.calendar.store.data.length);
}

您还需要确保在该循环内调用的任何使用变量 i 的代码都有该变量自己的声明

有关 javascript 作用域的良好答案,请参阅 this question

关于Javascript for 循环提前结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642939/

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