详解 js 闭包(图文版)

(2)、如果两个对象互相引用,而不再被第 3者所引用,那么这两个互相引用的对象也会被回收。

使用闭包的好处

那么使用闭包有什么好处呢?使用闭包的好处是:

1.希望一个变量长期驻扎在内存中2.避免全局变量的污染3.私有成员的存在

一、全局变量的累加

详解 js 闭包(图文版)

二、局部变量

详解 js 闭包(图文版)

那么怎么才能做到变量a既是局部变量又可以累加呢?

三、局部变量的累加

详解 js 闭包(图文版)

在js中我们可以通过关键字 function来声明一个函数:

详解 js 闭包(图文版)

我们也可以通过一个"()"来将这个声明变成一个表达式:

详解 js 闭包(图文版)

四、模块化代码,减少全局变量的污染

详解 js 闭包(图文版)

五、私有成员的存在

详解 js 闭包(图文版)

六.使用匿名函数实现累加

详解 js 闭包(图文版)

过度使用闭包会导致性能的下降。函数里放匿名函数,则产生了闭包

七、在循环中直接找到对应元素的索引

详解 js 闭包(图文版)

八、使用闭包改写上面代码

详解 js 闭包(图文版)

九.内存泄露问题

由于 IE的 js对象和 DOM对象使用不同的垃圾收集方法,因此闭包在 IE中会导致内存泄露问题,也就是无法销毁驻留在内存中的元素

详解 js 闭包(图文版)

10.新增

很多初学者学了闭包后,可能也不懂到底在哪里才有用到,甚至不懂闭包到底有啥用。 其实你写的每一个js函数都是闭包,一个js函数的顶层作用域就是window对象,js的执行环境本身就是一个scope(浏览器的window/node的global),我们通常称之为全局作用域。每个函数,不论多深,都可以认为是全局scope的子作用域,可以理解为闭包。


分享到:


相關文章: