之间有什么区别:
k = setInterval(function(){loop();},100);
和
k = setInterval(loop(),100);
为什么第二个运行一次,比如setTimeout()函数和第一个每1/10秒运行一次?
答案 0 :(得分:8)
在第二个实际上,您在调用loop
之前实际执行setInterval
,因此您将loop
的结果传递给setInterval
更类似的是
k = setInterval(function(){loop();},100);
k = setInterval(loop,100);
答案 1 :(得分:1)
第一个例子允许你在调用循环之前做一些工作,并在必要时传递一些参数
第二个需要一个函数对象作为第一个参数,你不能在括号内传递任何东西。
第一个是比第二个更广泛传播的模式(有点过时)
答案 2 :(得分:0)
让我们看看doest JS如何运行这段代码:
拳头方式 -
JS看到setInterval - 它应该有2个参数和计时器 - 在第一个变体中,everythink是微不足道的 - 你传递一个函数,在每个间隔和计时器上调用。
让我们检查第二个变体 - 再次setInterval,2个参数。但是这次你没有传递链接到函数但是调用函数,这个函数的结果将被传递给setInterval。当你调用函数时 - 它运行一次,因为它执行返回函数setInterval不能运行任何东西。