javascript 中的回调说明

callback explanation in javascript

在下面的代码中,我使用 setTimeout 来调用 foo

function foo() {
  console.log('2000 milliseconds have passed since this demo started');
  }
  setTimeout(foo, 2000);

据我所知,如果我们不使用括号,则代码将仅将该函数作为指针来引用,函数是如何在此处调用而不带括号

以此为例进行比较:

function myFunction(callback) {
    callback();
}

function foo() {
  console.log('The foo function has been called');
}

myFunction(foo);

您作为参数传递的函数被 myFunction 中的代码调用。

setTimeout 以类似的方式工作:您只是没有查看它的源代码,因为它不是您自己编写的代码。浏览器自带。

举个例子

function f() {
    return 10;
}

var a = f();
var b = f;

此处 a 包含 10,而 b 将包含对函数 f 的引用。您可以使用

调用 b 上的函数
var c = b(); // c contains 10

settimeout 的工作方式类似。如果您用括号调用该函数,它将立即被调用。虽然我们不使用括号,但 settimeout 函数将有一个引用并在指定时间后调用它。