千锋教育JavaScript全套视频教程(10天学会Js,前端javascrip

什么是闭包:
----(说法1)经典应用场景、把一个函数作为返回值
----闭包就是一个函数
----(说法2)函数与其周围的状态(lexical environment,词法环境)的组合
写法:
1.函数嵌套函数:闭包必须有函数嵌套函数的结构。
2.内部函数可以访问外部函数的变量:内部函数可以访问外部函数中的变量,即使在外部函数执行完毕后,这些变量仍然可以被访问。
3.外部函数返回内部函数:外部函数必须返回内部函数,才能形成闭包。
好处:
1.局部变量常驻内存,像是全局变量一样,常驻内存,不会污染全局命名空间。
2.产生 私有变量
原理:
1.垃圾回收机制--被外部引用的局部变量没有被回收
2.作用域链--内部函数 使用变量的时候,会先在自身作用域中,找不到就去父级 作用域中--依次类推。
缺点:
容易造成内存泄漏
解决:不用的话手动赋值为null