什么是闭包? 闭包 是指有权访问另一个函数作用域中变量的函数。 ----JavaScript高级程序设计
(大白话版: 一个函数 可以访问 另一个函数里面的变量 这个函数就叫闭包。)
闭包的作用:
闭包的好处有:
1访问另一个函数作用域中变量
2可以在内存中维持一个变量,用来做缓存(但使用多了同时也是一项缺点,消耗内存)
3.实现封装,防止变量跑到外层作用域中,发生命名冲突
4.匿名自执行函数,匿名自执行函数可以减小内存消耗
闭包的坏处:
1.内存消耗
存在内存泄漏 , 闭包引用另外一个函数的变量会一直存在,无法自动销毁。
(通常来说,函数的活动对象会随着执行期上下文一起销毁,但是,由于闭包引用另外一个函数的活动对象,因此这个活动对象无法被销毁,这意味着,闭包比一般的函数需要更多的内存消耗。)
2.性能问题
使用闭包时,会涉及到跨作用域访问,每次访问都会导致性能损失。