这些代码之间有什么区别?

时间:2014-02-28 07:25:17

标签: javascript loops settimeout setinterval

之间有什么区别:

k = setInterval(function(){loop();},100);

k = setInterval(loop(),100);

为什么第二个运行一次,比如setTimeout()函数和第一个每1/10秒运行一次?

3 个答案:

答案 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不能运行任何东西。