我在W3学校找到了这个 setTimeout()方法示例,并发现了一些我无法解释的内容.例子是:
myVar = setTimeout(alertFunc, 3000);
Run Code Online (Sandbox Code Playgroud)
......工作正常.但是当我改变它
myVar = setTimeout(alertFunc(), 3000);
Run Code Online (Sandbox Code Playgroud)
......警报立即触发.为什么?不应该是一样的吗?
不应该是一样的吗?
一点都不.
setTimeout(alertFunc, 3000)将alertFunc(对函数的引用)的值传递给setTimeout.setTimeout存储功能参考,以便在三秒后调用它.
setTimeout(alertFunc(), 3000) alertFunc立即调用,并将其返回值传递给setTimeout.正是这种方式foo(bar()) 调用 bar并将其返回值传递给foo.