JavaScript中的回调说明

时间:2018-12-04 19:26:26

标签: javascript function higher-order-functions

在以下代码中,我正在使用setTimeout调用foo

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

据我所知,如果我们不使用括号,则代码将仅将该函数称为指针,该函数如何在不带括号的情况下被调用执行

2 个答案:

答案 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函数将具有一个引用,并在指定时间后调用它。