在Javascript中,回调函数总是一个闭包??逆函数不正确,因为您可以看到下面的
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
};
var myFunc = makeFunc();
myFunc();其中myfunc是闭包,而不是回调。
闭包是从其封闭环境继承变量的函数。当您将一个函数回调作为参数传递给将执行I/O任务的另一个函数时,这个回调函数将在稍后被调用,并且这个函数--几乎神奇地--将记住声明它的上下文,以及在该上下文和任何父上下文中可用的所有变量。这个强大的特性是Node成功的核心。
来自其他链接
另外,因为回调的行为就好像它们实际上被放置在该函数中一样,所以它们实际上是闭包:它们可以访问包含函数的变量和参数,甚至可以从全局范围访问变量。
链接
当我们将回调函数作为参数传递给另一个函数时,回调将在包含函数的主体内的某个点执行,就像回调是在包含函数中定义的一样。这意味着回调是一个闭包。阅读我的文章,了解JavaScript闭包,了解更多关于闭包的信息。如我们所知,闭包可以访问包含函数的作用域,因此回调函数可以访问包含函数的变量,甚至可以访问全局作用域的变量。
发布于 2015-12-28 21:53:52
回调总是一个结束吗?
这些都是正交条件。
回调是传递给要从函数内部调用的另一个函数的函数引用。
闭包始终是一个内部函数,它使用外部函数中的变量。如果内部函数不使用任何外部变量,那么它“不关闭任何东西”--只是一个函数与其他函数一样。
https://stackoverflow.com/questions/34501272
复制相似问题