gpt4 book ai didi

javascript - setInterval、递归、计时器 ID

转载 作者:行者123 更新时间:2023-11-28 13:41:34 25 4
gpt4 key购买 nike

我正在观看的教程中有这个动画示例:

(function() {

var speed = 10,
moveBox = function(moveBy) {
var el = document.getElementById("box"),
left = el.offsetLeft;


if ((moveBy > 0 && left > 399) || (moveBy < 0 && left < 51)) {
clearTimeout(timer);
timer = setInterval(function() {
moveBox(moveBy * -1);
}, speed);
}

el.style.left = left + moveBy + "px";

};

var timer = setInterval(function () {
moveBox(3);
}, speed);
}());

我只是好奇clearTimeout(计时器)如何不会抛出错误,因为计时器是在clearTimeout函数之后定义的。

最佳答案

JavaScript 变量被提升到封闭范围的顶部,因此您的代码或多或少相当于:

(function() {
var speed = undefined;
var moveBox = undefined;
var timer = undefined;

speed = 10;
moveBox = function(moveBy) { /* Stuff that uses timer ... */ };

timer = setInterval(function () { ... }, speed);
}());

var timer 在哪里并不重要,因为它会被提升到顶部,并且 timer 是为整个函数声明的。

MDN docs on var有一些关于吊装的信息。

关于javascript - setInterval、递归、计时器 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17508797/

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