gpt4 book ai didi

Javascript 关闭问题

转载 作者:行者123 更新时间:2023-11-28 12:10:39 25 4
gpt4 key购买 nike

为什么下面的代码打印“0 5 10 15 20 ... 100”?

(function () {
for ( var i = 100; i >= 0; i -= 5) {
(function() {
var pos = i;
setTimeout(function() {
console.log(" pos = " + pos);
}, (pos + 1)*10);
})();
}
})();

我声明 pos = i ,它应该按降序排列。这段代码源自 John Resig 在他的《Pro javascript 技术》一书中的 fadeIn() 函数。

最佳答案

您正在以正确的顺序注册超时,问题是它们是按照其值的顺序计时的,因此值 10 将在 100 毫秒内打印,值 100 将在 1000 毫秒内打印,等等。

因此您需要更改计时计算以从最大值中减去(在本例中为 100)

(function () {
for ( var i = 100; i >= 0; i -= 5) {
(function() {
var pos = i;
setTimeout(function() {
console.log(" pos = " + pos);
}, (100 - pos + 1)*10); // note the subtraction here
})();
}
})();

关于Javascript 关闭问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2704982/

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