分享人:马扬睿
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
先看看MDN的定义 闭包是函数和声明该函数的词法环境的组合
我们主要记住两种应用情况,函数作为返回值以及函数作为参数传递
第二,函数作为参数被传递
var max=10,
fn=function (x){
if(x>max){
console.log(x)
} }
(function(f){ var max=100; f(15); })
(fn)
为什么会产生闭包呢?
当一个函数被调用完成之后,其执行上下文环境将被销毁,其中的变量也会被同时销毁。
有些情况下,函数调用完成之后,其执行上下文环境不会接着被销毁。
但是,如果执行到具体的代码块的时候,返回的是一个函数的话
因为每个函数可以创建独立的作用域,如果这个函数一直引用着另一个函数内的某个变量
这个变量是不会被内存回收机制回收的
因为回收了该函数就找不到这个变量了
有点像
一个餐厅,盘子总是有限的,所以服务员会去巡台回收空盘子,但还装着菜的盘子他怎么敢收
只有你自己手动倒掉了盘子里面的菜(=null),那盘子就会被收走了,这就是所谓的内存回收机制
谢谢观看
分享人:马扬睿