在以下代码中,我正在使用setTimeout调用foo
function foo() {
console.log('2000 milliseconds have passed since this demo started');
}
setTimeout(foo, 2000);
据我所知,如果我们不使用括号,则代码将仅将该函数称为指针,该函数如何在不带括号的情况下被调用执行
答案 0 :(得分:1)
将此示例进行比较:
function myFunction(callback) {
callback();
}
function foo() {
console.log('The foo function has been called');
}
myFunction(foo);
您作为参数传递的函数由myFunction
中的代码调用。
setTimeout
的工作方式类似:您不是在看源代码,因为它不是您自己编写的代码。它随浏览器一起提供。
答案 1 :(得分:1)
举个例子
function f() {
return 10;
}
var a = f();
var b = f;
这里a包含10,而b将包含对函数f的引用。您可以使用
在b上调用该函数var c = b(); // c contains 10
以类似的方式settimeout起作用。如果使用括号调用该函数,则会立即调用它。虽然我们不使用括号,所以settimeout函数将具有一个引用,并在指定时间后调用它。