javascript - setInterval 不调用带有参数的函数

标签 javascript html setinterval

我试图使用 setInterval 重复调用一个函数。当我调用不带参数的函数时,它会起作用。但是,在调用带参数的函数时,该函数仅被调用一次。

Here是js fiddle

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script src="./check.js">

</script>
</body>
</html>

check.js 不带参数 - 有效

setInterval(myfun,100)
var mycounter = 0;

function myfun()
{
    console.log(mycounter++)
}

check.js 带参数 - 不起作用

setInterval(myfun(0),1000)

function myfun(mycounter)
{
    console.log(mycounter++)
}

最佳答案

当您添加括号时,会立即调用该函数,并在间隔中使用返回的结果,在您的情况下,它是默认返回值undefined

你真正在做的是

var result = myfun(0); // returns undefined

setInterval(result, 1000); // no go, result is undefined

function myfun(mycounter) {

}

如果你想传递参数,最简单的就是使用匿名函数

setInterval(function() {
    myfun(0);
}, 1000);

现代浏览器(不包括 IE9 及以下版本)现在支持直接在 setInterval 中传递参数

setInterval(myfun, 1000, 0); // "0" is passed as the first argument to myfun()

当然,只有当变量存在于回调函数的时间间隔之外的范围内时,才能增加变量

关于javascript - setInterval 不调用带有参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625574/

相关文章:

Javascript/Jquery 解析 Json 请求

javascript - 什么是描述符?

javascript - 如何加载第二页作为覆盖层

javascript - 将 "this"传递到 window.setInterval()

JavaScript:如何防止用户使 setInterval/setTimeout 事件崩溃?

jQuery setInterval 幻灯片放映滞后

javascript - 在 Angular 应用程序中加载 Fabric JS

php - 排序、搜索(过滤)、分页 HTML 表格

html - @media 中的浏览器表单宽度兼容性

html - 如何将 html、css 和 javascript 代码从 jsfiddle 合并到一个文档中?