04-闭包

71 阅读2分钟

1.为什么会有闭包

​ 即想有全局变量的重用性,又想又局部变量的不会被污染性。

全局变量.jpg

局部变量.jpg

1.2全局变量的优缺点:

优: 可重用

缺: 极易被污染——将来在公司中禁止使用一切形式的全局变量。

1.3局部变量的优缺点:

优: 不会被污染

缺: 不可重用

2.什么是闭包:

​ 闭包(closure)指有权访问另一个函数作用域中变量的函数。简单理解就是,一个作用域可以访问另外一个函数内部的局部变量

​ 外层函数调用后,外层函数的作用域对象,被返回的内层函数引用着,无法释放,就形成了闭包对象

闭包.jpg

2.1用法:

既重用变量,又保护变量不被污染的一种编程方法。

2.2本质:

外层函数调用后,外层函数的作用域对象,被内层函数引用着,无法释放,就形成了闭包对象——一句话概括闭包如何形成的!

3.如何使用闭包三步

  1. 用外层函数包裹要保护的变量和使用变量的内层函数
  2. 在外层函数内部,返回内层函数对象
  3. 调用外层函数,用变量接住返回的内层函数对象。

11.jpg

4.何时使用闭包

​ 今后,只要希望给一个函数定义一个专属的且可重用的变量,只有函数自己可用,别人不可用时,就用闭包!

5. 缺点:

​ 闭包返回的内存函数,比普通函数多占用一块内存空间。

​ 闭包对象作用域一直都存在

5.1解决:

如果一个闭包不打算使用了,应该及时释放!

保存内层函数的外部变量=null

释放了内层函数对象

同时也释放了外层函数的作用域对象。

6.原理

闭包原理.jpg

函数执行完后,只销毁自己的函数作用域