什么是闭包
定义:
闭包当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外部被执行,就产生了闭包,简单说闭包就是一个环境,能够读取其他函数内部的变量。本质上,闭包是将函数内部和函数外部连接起来的桥梁。
用处:
1.读取函数内部的变量;
2.这些变量的值始终保存在内存中,不会在外层函数调用后被自动清除。
优点:
1.变量长期存储在内存中;
2.避免全局变量的污染;
3.私有成员的存在;
特性:
1.函数套函数;
2.函数内部可以直接使用外部函数的变量或者参数;
3.变量或参数不会被垃圾回收机制回收
缺点:
常驻内存,会加大内存的使用量,可能会造成内存泄漏;
例如下面这段代码就是一个闭包:
function fn(){
let n=111;
function fs(){
alert(n); }
return fs;
}
let result=fn();
result(); // 111