什么是闭包,其好处,应用场景以及缺点?
- 概念: 有权访问另一个函数作用域中的变量的函数。简单理解为“定义在一个函数内部的函数”。
- 好处: 保护函数内的变量安全,加强了封装性;在内存中维持一个变量(缓存);匿名自执行函数;模拟面向对象编程。
- 应用场景: 使用闭包代替全局变量;函数外或在其他函数中访问某一函数内部的参数;包装相关功能;为节点循环绑定click事件,在事件函数中使用当次循环的值或节点,而不是最后一次循环的值或节点。
- 缺点: 常驻内存,会增大内存使用量,使用不当很容易造成内存泄露,更重要的是,对闭包的使用不当会造成无效内存的产生。
function checkScope() {
var scope = 'son';
return function sonScope() {
var scope = 'son1';
return scope;
}
};
checkScope()();
var fun = (function checkScope() {
var scope = 'son';
return function sonScope() {
var scope = 'son1';
return scope;
}
}());
fun();