Is回调函数始终是一个闭包
Is callback function always a closure?
在Javascript中,回调函数总是一个闭包正如您在下面看到的,相反的情况不是真的[?]:
function makeFunc() {
var name = "Mozilla";
function displayName() {
alert(name);
}
return displayName;
};
var myFunc = makeFunc();
myFunc();
其中myfunc
是闭包,而不是回调。
闭包是从其封闭环境中继承变量的函数。当你通过函数回调作为另一个将执行I/O的函数的参数,此回调函数将稍后调用,这个函数将——几乎神奇地——记住它所在的上下文声明,以及该上下文和任何父上下文中可用的所有变量。这强大的功能是Node成功的核心。
来自其他链接:
此外,因为回调的行为就像它们实际上被放在内部一样在这个函数中,它们实际上是闭包:它们可以访问包含函数的变量和参数,甚至变量从全球范围来看。
链路
当我们将回调函数作为另一个函数的参数,回调在某个时刻执行在包含函数的主体中,就像回调在包含函数中定义。这意味着回调是关闭。阅读我的文章,轻松理解JavaScript闭包更多关于闭包的信息。正如我们所知,闭包可以访问包含函数的作用域,因此回调函数可以访问包含函数的变量,甚至来自全局范围的变量。
回调总是一个闭包?
这些是正交项。
回调是从内部传递给另一个要调用的函数的函数引用
闭包始终是一个内部函数,它使用外部函数中的变量。如果内部函数不使用任何外部变量,那么它"什么都不关闭"——只关闭一个与其他函数一样的函数。
相关文章:
- 使用Google闭包编译器包含一个Ecmascript 6类
- 在谷歌地图示例中为 Ajax 调用制作一个 JavaScript 闭包
- 闭包中的本地变量从外部更改.这是一个javascript错误,或者我做错了什么
- 将一个简单的函数声明形成JavaScript中的闭包
- 递增并存储一个“;私人的“;使用闭包的变量
- 为什么需要在这个闭包中创建一个变量
- 这是闭包的一个很好的例子吗?
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 为什么这不是一个javascript闭包
- JavaScript 中的闭包:再举一个例子
- 这是一个JavaScript闭包错误吗?
- 闭包的意外行为:回调保存最后一个值
- Javascript - 在闭包中使用函数构造函数是一个坏主意吗?
- 我们是否可以使用谷歌闭包创建一个带有复选框和组合框的对话框
- 向Jquery$.each传递一个闭包
- 我如何告诉谷歌闭包编译器不要删除一个变量
- Is回调函数始终是一个闭包
- ES2015导出的类是否创建了一个闭包
- 我如何把所有这1200+行自定义javascript到一个闭包,所以没有全局变量
- 一个闭包中的jquery tmpl