1、解释:js因为函数里面还可以定义函数,闭包就是函数体内的搜寻变量作用域时候,可以往关联的父级函数搜索变量的一种特权。
当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。
2、范例:
function add(a){
return function add2(b){
return function add3(c){
return a + b + c;
}
}
}
var sum = add(2);
var sum2 = sum(3);
var sum3 = sum2(4);
alert(sum3); ///9
3、闭包的使用场景或者优点:当我们需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会“污染”全局的变量时,就可以用闭包来定义这个模块。
4、闭包的缺点或者风险点:有内存泄漏的风险