我有一个看似基本的 javascript 问题,但我无法理解。为什么下面的代码片段有效(取自 w3 学校)?
本质上我要问的是为什么下面的“myVar”变量在没有显式调用的情况下执行setInterval方法?我最好的猜测是这与 javascript 处理变量赋值的方式有关?
<html>
<body>
<p>Click the button to wait 3 seconds, then alert "Hello".</p>
<p>After clicking away the alert box, an new alert box will appear in 3 seconds. This goes on forever...</p>
<button onclick="myFunction()">Try it</button>
<script>
var myVar;
function myFunction() {
myVar = setInterval(alertFunc, 3000);
}
function alertFunc() {
alert("Hello!");
}
</script>
</body>
</html>
如果需要进一步说明,这里是我当前工作中的代码片段:
var refresh = setInterval(function() {
$("#div").load('Query.html');
}, 1000);
所以我的问题是,为什么上面的方法可以在其他地方不调用“刷新”变量的情况下工作?
最佳答案
setInterval()
本身执行循环调用(请参阅编辑)并返回处理循环调用的进程的 ID。分配返回值的目的是为了之后使用 clearInterval()
,因为它要求您传递 setInterval()
的返回值(= 进程 ID)作为其参数。
在您的情况下,如果您希望您在 setInterval()
中传递的函数不再被调用(通过您使用 setInterval
创建的“循环调用链”)您只需执行clearInterval(refresh)
即可。
编辑
setInterval
需要两个参数:一个内联函数(或函数指针)和一个整数。
setInterval
的作用是等待 {integer Passed}
毫秒,然后调用该函数并一遍又一遍地重复相同的操作,直到您调用 clearInterval
传递 setInterval
的返回值。
关于javascript - Javascript 如何处理将 setInterval() 分配给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501078/