javaScript闭包和垃圾收集器

如果人口一直增长,地球总有一天会爆炸的。

浏览器同样如此,内存有限的情况下,如果里面的东西越来越多,总有一天会不堪重负。

垃圾收集器就是用来清理不再用的内存空间的,执行环境会负责管理代码执行过程中使用的内存。而垃圾收集的策略有二,现代浏览器最常用的垃圾收集方式是标记清除

  1.给内存中的每一个变量都加上标记;

  2.去掉环境中的变量以及被引用的变量;

  3.那些被标记的变量就要被垃圾处理器清除出去。

在IE7版本之前,浏览器垃圾收集器是按照内存分配量运行的,当内存占用到了一个临界值,垃圾收集器就会运行。在有很多的变量的情况下,垃圾收集器频繁运行就会导致浏览器的崩溃。

闭包:

垃圾收集器是针对局部变量的;

为了让变量一直在内存中,我们首先会想到定义一个全局变量,但是全局变量也许会在我们后面的使用中不小心改变了它的值,我们可以用局部变量来保护,但问题又来了,局部变量怎样访问呢,于是就出现了闭包。闭包的例子有很多,比如一个函数里面嵌套一个函数,这样做的目的就是让函数外部可以访问里面的变量。

JS不像java或其他面向对象语言有private属性,用闭包事实上充当了这样的角色。

 

posted on 2017-07-07 13:00  水镜号吃鱼居士  阅读(176)  评论(0编辑  收藏  举报