pma*_*325 0 javascript setinterval
我有这个代码:
var myVar = setInterval(myTimer(13), 1000);
function myTimer(x) {
console.log(x);
}
Run Code Online (Sandbox Code Playgroud)
目前,它只打印一次13到控制台,但我认为它应该每秒打印一次,对吧?除非我不理解它是如何工作的.我只是想在最基本的层面上分解它.
该代码调用错误setInterval(),而是仅使用一次myTimer参数13立即调用.代码应该是:
var myVar = setInterval(function(){ myTimer(13); }, 1000);
function myTimer(x) {
console.log(x);
}Run Code Online (Sandbox Code Playgroud)
因为setInterval()需要将函数引用传递给它,而不是要调用的实际代码.
发生的事情是myTimer(13)立即被调用(因为这就是那行做的 - 调用一个函数).然后该函数运行并打印13到控制台并且不返回任何内容.然后将"nothing"作为第一个参数传递给它setInterval(),它应该是一个函数引用,但在你的情况下是undefined.undefined不能每秒运行,所以没有其他事情发生.
因为你需要传递一个参数myTimer,你需要通过在它之后添加括号来做到这一点,但这样做会调用函数,所以我们将该函数调用包装在另一个函数声明中,并且该包装器将被调用的函数间隔.它将依次打电话myTimer(13).
现在,如果您不需要将参数传递给myTimer函数,那么您将不需要外部函数包装器并且可以执行以下操作:
var myVar = setInterval(myTimer, 1000);
function myTimer() {
console.log("13");
}Run Code Online (Sandbox Code Playgroud)
请注意,myTimer旁边没有任何括号?那是因为我们没有尝试调用它,我们只想传递对它的引用.
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |