在Javascript中,回调函数总是一个闭包?如下所示,反之不是真的[?]:
function makeFunc() { var name = "Mozilla"; function displayName() { alert(name); } return displayName; }; var myFunc = makeFunc(); myFunc();
myfunc
闭包在哪里,而不是回调.
闭包是从其封闭环境继承变量的函数.当你将函数回调作为参数传递给另一个将执行I/O的函数时,这个回调函数将在稍后调用,并且这个函数将 - 几乎神奇地 - 记住声明它的上下文,以及所有可用的变量在那种情况下和任何父母背景.这一强大功能是Node成功的核心.
来自其他链接:
此外,因为回调的行为就像它们实际上放在该函数中一样,它们实际上是闭包:它们可以访问包含函数的变量和参数,甚至来自全局范围的变量.
链接
当我们将回调函数作为参数传递给另一个函数时,回调是在包含函数体内的某个点执行的,就好像在包含函数中定义了回调一样.这意味着回调是一个闭包.阅读我的帖子,了解更多关于闭包的JavaScript闭包.我们知道,闭包可以访问包含函数的作用域,因此回调函数可以访问包含函数的变量,甚至可以访问全局作用域中的变量.
c-smile.. 7
回调总是关闭?
这些是正交术语.
回调是一个函数引用传递给另一个要从其内部调用的函数.
闭包始终是一个使用外部函数变量的内部函数.如果内部函数不使用任何外部变量,那么它"什么都不关闭" - 只是一个函数,就像任何其他函数一样.
回调总是关闭?
这些是正交术语.
回调是一个函数引用传递给另一个要从其内部调用的函数.
闭包始终是一个使用外部函数变量的内部函数.如果内部函数不使用任何外部变量,那么它"什么都不关闭" - 只是一个函数,就像任何其他函数一样.