简析javascript中闭包用法

1.具体案例中理解闭包的使用
若要记录一个函数被调用几次的话,首先可能想到的是这样操作如下代码显示:
简析javascript中闭包用法
这样调用函数会是三个1,不会再count上进行累加。因为count是局部变量。它的生存周期的开始和结束都在调用函数那一刻。所以三次的调用都是不一样的调用。解决这样的问题有两个,一个是将count设置为全局变量,还有就是使用闭包。
全局变量虽然可以,但是不推荐,会导致全局污染。下面展示闭包的解决方案。
简析javascript中闭包用法
代码中fun()就是一个闭包,add()的运行结果就是return fun,将add()赋值给f1,此时的fun==f1,f1()==fun(),此时就可以从外部操作局部变量count。变向将局部变量count的作用域延长。
此时三次调用的结果就为 1 2 3 ,达到记录调用函数次数的目的。
以上案例理解了闭包的用法,下面来看看闭包的文字描述。
2.什么是闭包?
闭包是函数的一种高级应用方式。通过建立一个不被摧毁的空间没在函数外部使用函数内部的数据,也可以理解为延长作用域。具体形式为函数嵌套函数,被嵌套的函数称为闭包函数。
3.闭包的特点也是它的功能
(1)可以读取函数内部的变量
(2)让这些变量的值始终保持在内存中
(3)增加块级作用域
4.使用闭包的注意事项
由于闭包会使得函数中的表白能量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在ie中可能会导致内存泄漏。