JS 闭包的作用是什么?


本文摘自PHP中文网,作者Guanhui,侵删。

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) 的子集。

闭包示例

模拟私有变量:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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 闭包的作用是什么?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

如何理解javascript是动态语言

用js+html5实现的小游戏-- 捕鱼达人游戏

javascript有什么用?

js中函数表达式 vs 函数声明,聊聊它们的不同点

content-type几种值的区别及用法介绍

js如何设置css

js中相等判断===、==、object.is()的区别

node.js中文件之间的引入教程实例

js如何获取图片宽高

javascript去除拼接字符串末尾符号的方法

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...