关闭闭包(Closure)的理解

  

闭包的产生条件:一个嵌套的内部函数(子)引用外部函数(父)的变量,外部函数一被调用,就会就产生了闭包

闭包的理解:

一、闭包是嵌套的内部函数(大部分人这样认为,也就是下面例子中的fun2

二、闭包是包含了引用变量的对象(更加准确,下面例子fun2中一个Closure对象)

注意:闭包存在于嵌套的内部函数中。

常见的闭包:

一、将一个函数作为另外一个函数的

 

 

 

 

 

 

 

二、将函数作为实参传递给另外一个函数调用

如果不存在闭包,那么上面两个函数在执行时都会报错,因为内部的变量在函数执行完毕后被销毁

闭包的作用:

一、使函数内部的变量在函数执行完毕后,任然存活在内存中(延长局部变量的生命周期)

二、让函数外部可以操作(读写)到函数内部的数据(变量/函数)

问题:1.函数执行完后,函数内部声明的局部变量是否还存在?一般是不存在的,存在于闭包中的局部变量才了能存在

2.在函数的外部能直接访问函数内部的局部变量吗?不能,但是我们可以通过闭包让外部操作它

 

闭包的生命周期:

1.产生:在嵌套内部函数定义执行完时就产生了(不是在调用)

2.死亡:在嵌套的内部成为垃圾对象时

 

闭包的应用:定义js模块

*具有特定功能的js模块

*将所有的数据和功能都封装在一个函数内部

*只像外部暴露一个包含n个方法的对象或者函数

*模块的使用者只要通过模块暴露的对象调用方法来实现对应的功能

 

 

 

 

 

 

posted @ 2020-07-26 17:20  esnlzy  阅读(431)  评论(0)    收藏  举报