setInterval不会重复吗?

问题描述

为什么将其与上述关联?在从下面提供的答案中理解了问题之后,我通读了这些答案,并且上面没有任何内容可以产生任何见识。

html文档

let tester = 0;
    setInterval(iterateCounter(),1000);
    
    function iterateCounter(){
      ++ tester;
      console.log(tester);
    }
    

这可能是一个可怕的问题,但在此之上,我已经检查了MDN,JSinfo和经过仔细研究的堆栈约20分钟。为什么此代码段只运行一次然后不重复?

解决方法

您应该仅传递函数名称而不是调用它:

let tester = 0;
setInterval(iterateCounter,1000);
    
function iterateCounter(){
      ++ tester;
      console.log(tester);
}

有关更多信息,您可以检查docs

,

setInterval的第一个参数接受函数本身,而不接受函数返回的值。要使其正常工作,只需在iterateCounter

之后删除范围

let tester = 0;
    setInterval(iterateCounter,1000);
    
    function iterateCounter(){
      ++ tester;
      console.log(tester);
    }