1.为什么会有闭包
即想有全局变量的重用性,又想又局部变量的不会被污染性。
1.2全局变量的优缺点:
优: 可重用
缺: 极易被污染——将来在公司中禁止使用一切形式的全局变量。
1.3局部变量的优缺点:
优: 不会被污染
缺: 不可重用
2.什么是闭包:
闭包(closure)指有权访问另一个函数作用域中变量的函数。简单理解就是,一个作用域可以访问另外一个函数内部的局部变量
外层函数调用后,外层函数的作用域对象,被返回的内层函数引用着,无法释放,就形成了闭包对象
2.1用法:
既重用变量,又保护变量不被污染的一种编程方法。
2.2本质:
外层函数调用后,外层函数的作用域对象,被内层函数引用着,无法释放,就形成了闭包对象——一句话概括闭包如何形成的!
3.如何使用闭包三步
- 用外层函数包裹要保护的变量和使用变量的内层函数
- 在外层函数内部,返回内层函数对象
- 调用外层函数,用变量接住返回的内层函数对象。
4.何时使用闭包
今后,只要希望给一个函数定义一个专属的且可重用的变量,只有函数自己可用,别人不可用时,就用闭包!
5. 缺点:
闭包返回的内存函数,比普通函数多占用一块内存空间。
闭包对象作用域一直都存在
5.1解决:
如果一个闭包不打算使用了,应该及时释放!
保存内层函数的外部变量=null
释放了内层函数对象
同时也释放了外层函数的作用域对象。
6.原理
函数执行完后,只销毁自己的函数作用域