gpt4 book ai didi

javascript - 在 for 循环中初始化的变量的作用域规则

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:26 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Javascript closure inside loops - simple practical example

我正在我的一个项目中使用 setTimeout 来限制向 DOM 添加元素(这样 UI 就不会在页面加载期间卡住)。但是,我遇到了一些让我感到困惑的事情。鉴于此代码:

for(var i = 0; i < 5; i++) {
var j = i + 10;
console.log("i is: " + i + " j is: " + j);
setTimeout(function() {
console.log("in timeout i is: " + i + " j is: " + j);
}, i * 1000);
}

我得到以下输出:

i is: 0 j is: 10
i is: 1 j is: 11
i is: 2 j is: 12
i is: 3 j is: 13
i is: 4 j is: 14
in timeout i is: 5 j is: 14
in timeout i is: 5 j is: 14
in timeout i is: 5 j is: 14
in timeout i is: 5 j is: 14
in timeout i is: 5 j is: 14

i 在超时中的值是 5 是显而易见的,因为 i 在 for 循环初始化范围内。但是,为什么所有超时输出的 j 都是 14?我原以为 j 会在超时时输出 10、11、12、13、14,因为它在循环范围内。我怎样才能达到那个结果?

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