javascript中的回调解释

javascript中的回调解释,javascript,function,higher-order-functions,Javascript,Function,Higher Order Functions,在下面的代码中,我使用setTimeout调用foo function foo() { console.log('2000 milliseconds have passed since this demo started'); } setTimeout(foo, 2000); 据我所知,如果我们不使用括号,代码将只引用函数作为指针,函数是如何执行的,在这里调用时不使用括号,以下面的示例进行比较: 函数myFunction(回调){ 回调(); } 函数foo(){ log('调用

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

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

据我所知,如果我们不使用括号,代码将只引用函数作为指针,函数是如何执行的,在这里调用时不使用括号,以下面的示例进行比较:

函数myFunction(回调){
回调();
}
函数foo(){
log('调用了foo函数');
}

myFunction(foo)以此示例进行比较:

函数myFunction(回调){
回调();
}
函数foo(){
log('调用了foo函数');
}
myFunction(foo)举个例子

function f() {
    return 10;
}

var a = f();
var b = f;
这里a包含10,而b将包含对函数f的引用。您可以使用

var c = b(); // c contains 10
settimeout的工作方式与此类似。如果用括号调用函数,它将立即被调用。虽然我们不使用括号,但是settimeout函数将有一个引用,并在指定的时间后调用它。

举个例子

function f() {
    return 10;
}

var a = f();
var b = f;
这里a包含10,而b将包含对函数f的引用。您可以使用

var c = b(); // c contains 10

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

正确。这只是一个“是”和“否”的答案吗?如果添加括号
setTimeout(foo(),2000)函数立即执行,setTimeout将尝试执行foo返回的任何内容(此处未定义,因为您不返回任何内容)。如果foo返回一个函数,那么该函数将在delayCorrect之后运行。这只是一个“是”和“否”的答案吗?如果添加括号
setTimeout(foo(),2000)函数立即执行,setTimeout将尝试执行foo返回的任何内容(此处未定义,因为您不返回任何内容)。如果foo返回一个函数,那么该函数将在延迟后运行。这意味着我们正在使用一些源代码在内部调用该函数,那么带匿名函数的arrow函数是如何执行的呢?请看我的评论@Quentin@VenkateshMuthyla-同样的方式。函数就是函数。无论您是使用箭头、表达式还是声明创建它。不管你给它分配了多少个变量。谢谢,这意味着我们用一些源代码在内部调用函数,那么带匿名函数的箭头函数是如何执行的呢?请看我的评论@Quentin@VenkateshMuthyla-同样的方式。函数就是函数。无论您是使用箭头、表达式还是声明创建它。在这个过程中,分配多少变量并不重要。