javascript - Javascript 如何处理将 setInterval() 分配给变量?

标签 javascript jquery

我有一个看似基本的 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/

相关文章:

javascript - Bootstrap css 影响单选按钮的行为

javascript - 如何将普通表转换为 CkEditor 表

javascript - Grunt、Jasmine、Phantom、React 单元测试 : React throws on ReactElementValidator

javascript - FormData在前端定义,在后端未定义

javascript - 如何使用 jquery 追加包含 Angular Directive(指令)的元素

javascript - 为什么 Express 重定向会无限重定向我?

javascript - 在js中将字符串中的每个字母加倍

javascript - Highcharts 点单击事件返回 "hover"状态而不是 "select"状态

javascript - 用户上传的文件超过大小限制后如何在 View 上显示错误?

javascript - 如何在 jQuery 函数 text() 中添加新行