如果代码是这样的:
function showName(){
console.log('hello world');
}
setTimeout(showName(), 5000);
那么上面的代码并不会按照预期那样定期5秒钟运行一次。
来看看setInterval的定义
setInterval(callback, delay, [arg1], [arg2], [...]);
callback:需要重复执行的函数。
delay:延迟的时间(以毫秒为单位)。
[arg1], [arg2], [...]:可选参数,这些参数将传递给callback函数。
第一个是回调函数,也就是函数的定义。比如上面的是 是showName,是没有括号的。
如果加了括号showName(), 实际上是执行了这个函数,得到的是一个返回值,二showName里面没有返回值,所以默认是null,
所以上面的代码等效于
setTimeout(null, 5000);
所以就不会定时打印hello world的输出了。