3 回答

TA贡献1803条经验 获得超6个赞
myFunction
是一个功能
myFunction()
调用函数并生成函数返回的任何值。
setTimeout的目的是在经过一段时间后运行代码。你需要把它传递给setTimeout的,将执行之前刚刚函数传递给它(这样的setTimeout本身可以调用函数在适当的时候),因为如果你调用的函数(用括号)现在,而不是1秒后,。

TA贡献1719条经验 获得超6个赞
该setTimeout
功能需要一个函数引用*作为参数:引用变量,并且没有括号。
函数调用需要括号(即使函数不带参数)。
Nutshell: myFunction
是对函数的引用。myFunction()
执行函数,并在表达式中,将“等于”函数的返回值(或者undefined
如果没有返回任何内容)。
深入研究:有些情况setTimeout(myFunction(), 1000)
可能有意义,比如它myFunction()
本身是否会返回一个函数。例如:
var myFunction = function() { return function() { alert("ohai"); };};
匿名函数(包含单个
return
语句)立即执行。该函数的返回值本身就是一个包含的函数
alert
。
所以:
myFunction
alone是对函数的引用(恰好返回函数)。myFunction()
将执行。它评估为适合的函数引用setTimeout()
。
最后:
setTimeout(myFunction(), 1000);
这会myFunction()
在一秒钟内调用返回值。一秒钟之后,弹出警报。
*或者要评估的字符串,但首选参考。

TA贡献1735条经验 获得超5个赞
当你使用括号时,它会说'现在调用这个函数'。所以如果你说setTimeout(myFunction(),1000);
,它将使用函数的返回值作为超时的回调。如果函数的返回值本身不是函数,则会出现错误,因为它会尝试执行超时后不可执行的内容(字符串,数字,未定义等)。
添加回答
举报