您的位置:首页 > Web前端 > JavaScript

Javascript闭包

2017-09-19 16:22 99 查看
1.闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制所收回

2.变量的作用域
变量的作用域无非就是两种:全局变量和局部变量。
Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量,在函数外部自然无法读取函数内的局部变量。
这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

3.闭包有什么好处?应用在那里?
     1.希望一个变量长期驻扎在内存当中

     2.避免全局变量的污染

     3.私有成员的存在
闭包的好处有:

1.缓存

2.面向对象中的对象

3.实现封装,防止变量跑到外层作用域中,发生命名冲突

4.匿名自执行函数,匿名自执行函数可以减小内存消耗

闭包的坏处:

1.内存消耗

 通常来说,函数的活动对象会随着执行期上下文一起销毁,但是,由于闭包引用另外一个函数的活动对象,因此这个活动对象无法被销毁,这意味着,闭包比一般的函数需要更多的内存消耗。尤其在IE浏览器中需要关注。由于IE使用非原生javascript对象实现DOM对象,因此闭包会导致内存泄露问题,

2.性能问题
使用闭包时,会涉及到跨作用域访问,每次访问都会导致性能损失。

因此在脚本中,最好小心使用闭包,它同时会涉及到内存和速度问题。不过我们可以通过把跨作用域变量存储在局部变量中,然后直接访问局部变量,来减轻对执行速度的影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript