首页 > 其他 > 详细

关闭闭包(Closure)的理解

时间:2020-07-26 20:08:23      阅读:106      评论:0      收藏:0      [点我收藏+]

  

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

闭包的理解:

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

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

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

常见的闭包:

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

 

 

 

 技术分享图片

 

 

 

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

技术分享图片

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

闭包的作用:

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

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

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

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

 

闭包的生命周期:

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

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

技术分享图片

 

闭包的应用:定义js模块

*具有特定功能的js模块

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

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

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

 

 

 

 

 

 

关闭闭包(Closure)的理解

原文:https://www.cnblogs.com/lzyyyyy/p/13381037.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!