什么是闭包?
简单来说,闭包是指可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。
(父函数包裹子函数,这个子函数中存在能够访问父函数中变量的引用,这个子函数就是闭包)
为什么需要闭包?
局部变量无法共享和长久的保存,而全局变量可能造成变量污染,所以我们希望有一种机制既可以长久的保存变量又不会造成全局污染,在全局作用域中可以访问到被保存在局部作用域的变量。
特点
- 占用更多内存
- 不容易被释放
何时使用?
变量既想反复使用,又想避免全局污染
如何使用?
1.定义外层函数,封装被保护的局部变量。
2.定义内层函数,执行对外部函数变量的操作。
3.外层函数返回内层函数的对象,并且外层函数被调用,结果保存在一个全局的变量中。
代码
function Fn(){ var xx = ‘aaa‘; return (function(){ return xx; })() } var xxFn = Fn(); console.log(xxFn) // --->‘aaa‘ ,这个xxFn就是局部变量中xx的引用