首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >回调函数总是闭包吗?

回调函数总是闭包吗?
EN

Stack Overflow用户
提问于 2015-12-28 21:48:36
回答 1查看 1K关注 0票数 0

在Javascript中,回调函数总是一个闭包??逆函数不正确,因为您可以看到下面的

代码语言:javascript
运行
复制
function makeFunc() {
  var name = "Mozilla";
  function displayName() {
    alert(name);
  }
  return displayName;
};

var myFunc = makeFunc();
myFunc();

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

闭包是从其封闭环境继承变量的函数。当您将一个函数回调作为参数传递给将执行I/O任务的另一个函数时,这个回调函数将在稍后被调用,并且这个函数--几乎神奇地--将记住声明它的上下文,以及在该上下文和任何父上下文中可用的所有变量。这个强大的特性是Node成功的核心。

来自其他链接

另外,因为回调的行为就好像它们实际上被放置在该函数中一样,所以它们实际上是闭包:它们可以访问包含函数的变量和参数,甚至可以从全局范围访问变量。

链接

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-28 21:53:52

回调总是一个结束吗?

这些都是正交条件。

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

闭包始终是一个内部函数,它使用外部函数中的变量。如果内部函数不使用任何外部变量,那么它“不关闭任何东西”--只是一个函数与其他函数一样。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34501272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档