在 for 循环中使用 setTimeout 进行连续值输出
您在尝试使用 setTimeout 打印连续值时遇到了问题在 for 循环中,但它会导致最后一个值被打印两次。发生这种情况是因为当您直接在 setTimeout 函数中使用变量 i 时,其值会在函数执行时更新。要解决此问题,必须为每次迭代创建 i 的不同副本。
提供的解决方案通过声明一个名为 doSetTimeout 的辅助函数来实现此目的。在此函数中,声明一个新变量来保存 i 的当前值,然后在创建超时时将其作为参数传递。这可确保每个超时函数都有自己独特的 i 副本,从而消除执行期间值更新的任何问题。
function doSetTimeout(i) { setTimeout(function() { alert(i); }, 100); } for (var i = 1; i <= 2; ++i) doSetTimeout(i);
使用此解决方案,您可以按预期成功打印连续值 1 和 2。
以上是为什么 `for` 循环中的 `setTimeout` 打印最后一个值两次,我该如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!