我是一名网络开发人员,但很多人都在寻找更高级的技能,理解闭包似乎是最重要的。
我得到整个“执行上下文创建对一个永远不会被破坏的变量的引用”的事情,但实际上,这是JavaScript中的某种私有或静态变量实现吗?
答案 0 :(得分:14)
它们可以用于许多事情,例如,可见性(如传统OO中的私人成员)。
var count = function(num) {
return function(add) {
add = add || 1;
num += add;
return num;
}
}
我的count()
可以用数字播种。当我为返回分配一个变量时,我可以用一个可选的数字来调用它来添加到内部num
(最初是一个参数,但仍然是返回函数范围的一部分)。
This is a pretty good overview
答案 1 :(得分:4)
闭包是一个带有绑定变量的代码块 - 它从外部上下文“捕获”它的变量 - 但它独立于同一个上下文。
javascript中的实际用法是在定义事件或回调时 - 例如,你声明一个闭包是在点击按钮时执行的,但是这个闭包可以引用在调用者范围上声明的变量。
jQuery使用了很多闭包 - 顺便说一句,这是理解jQuery闭包的一个很好的链接:A Graphical Explanation Of Javascript Closures In A jQuery Context。
希望它有所帮助。
答案 2 :(得分:0)
有很多JS书籍可供使用,但如果你真的想要学习这个(仍然是最好的JS参考恕我直言),你真的应该抓住David Flanagan JavaScript: The Definitive Guide的副本。阅读有关闭包的章节,您将获得比任何人都可以在此回复中提供的更深入的知识。