JS 闭包的作用就是在A执行完并返回后,使得Javascript的垃圾回收机制不会收回A所占用的资源,因为A的内部函数B的执行需要依赖A中的变量,如果不使用闭包,B函数执行所依赖的变量会造成全局污染。
闭包本质
集合 S 是闭集当且仅当 Cl(S)=S(这里的cl即closure,闭包)。特别的,空集的闭包是空集,X 的闭包是 X。集合的交集的闭包总是集合的闭包的交集的子集(不一定是真子集)。有限多个集合的并集的闭包和这些集合的闭包的并集相等;零个集合的并集为空集,所以这个命题包含了前面的空集的闭包的特殊情况。无限多个集合的并集的闭包不一定等于这些集合的闭包的并集,但前者一定是后者的父集。
若 A 为包含 S 的 X 的子空间,则 S 在 A 中计算得到的闭包等于 A 和 S 在 X 中计算得到的闭包(Cl_A(S) = A ∩ Cl_X(S))的交集。特别的,S在 A 中是稠密的,当且仅当 A 是 Cl_X(S) 的子集。
闭包示例
模拟私有变量:
function Counter(start){ var count = start; return{ increment:function(){ count++; }, get:function(){ return count; } } } var foo = Counter(4); foo.increment(); foo.get();// 5
这里,Counter 函数返回两个闭包,函数 increment 和函数 get。 这两个函数都维持着对外部作用域 Counter 的引用,因此总可以访问此作用域内定义的变量count。
推荐教程:《JavaScript》
以上是JS 闭包的作用是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!