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