Is回调函数始终是一个闭包

Is callback function always a closure?

本文关键字:一个 闭包 回调 函数 Is      更新时间:2023-09-26

在Javascript中,回调函数总是一个闭包正如您在下面看到的,相反的情况不是真的[?]

function makeFunc() {
  var name = "Mozilla";
  function displayName() {
    alert(name);
  }
  return displayName;
};
var myFunc = makeFunc();
myFunc();

其中myfunc是闭包,而不是回调。

闭包是从其封闭环境中继承变量的函数。当你通过函数回调作为另一个将执行I/O的函数的参数,此回调函数将稍后调用,这个函数将——几乎神奇地——记住它所在的上下文声明,以及该上下文和任何父上下文中可用的所有变量。这强大的功能是Node成功的核心。

来自其他链接:

此外,因为回调的行为就像它们实际上被放在内部一样在这个函数中,它们实际上是闭包:它们可以访问包含函数的变量和参数,甚至变量从全球范围来看。

链路

当我们将回调函数作为另一个函数的参数,回调在某个时刻执行在包含函数的主体中,就像回调在包含函数中定义。这意味着回调是关闭。阅读我的文章,轻松理解JavaScript闭包更多关于闭包的信息。正如我们所知,闭包可以访问包含函数的作用域,因此回调函数可以访问包含函数的变量,甚至来自全局范围的变量。

回调总是一个闭包?

这些是正交项。

回调是从内部传递给另一个要调用的函数的函数引用

闭包始终是一个内部函数,它使用外部函数中的变量。如果内部函数不使用任何外部变量,那么它"什么都不关闭"——只关闭一个与其他函数一样的函数。