我之所以决定发布此问题,是因为我在线上关注了多个教程,并以不同的方式对待这个主题。
假设我有一个增加计数器的函数:

function addCounter()
{
    counter++;
}

现在,我想调用此函数以将其值放在其他变量中。以下哪种方法是正确的:var newcounter = addCounter();var newcounter = addCounter;
也许这是一个非常基本的问题,但是,不管您相信与否,这两种方法都给我带来了很好的结果,这就是为什么我想知道哪种更好,更正常,甚至更好,更正确!

与setTimeout相同:我使用的setTimeout(myFunction, 1000)setTimeout('myFunction()', 1000)具有相同的结果,因此,在这种情况下使用哪个?

最佳答案

newcounter = addCounter();newcounter = addCounter;应该产生非常不同的结果。我设置了一个fiddle to show you the different return values

newcounter = addCounter();

这会将addCounter的返回值分配给newCounter。变量counter递增,并且不返回任何内容。由于addCounter不返回任何内容,因此newcounter的值为undefined。当我尝试调用newCounter()时,出现一个明显的错误。

newcounter = addCounter;

这会将函数addCounter分配给newCounter。本质上,将创建一个指向函数的指针,并且如果您想证明它,则调用newCounter.toString()将返回addCounter的函数文本。

调用newCounter()将执行addCounter并增加counter

像前面的两个答案状态一样,setTimeout的字符串版本被皱眉了。您需要执行以下操作以每秒增加计数器。

setTimeout(addCounter, 1000);

jsFiddle

09-11 18:26