闭包就是函数嵌套函数,也是变量作用域的特殊情况
两种特殊情况:
- 函数作为参数被传入
- 函数作为返回值被返回
作用:保持局部变量不会销毁, 实现了局部变量不会被销毁
代码:
- 函数作为参数被传入
function print(fn){
let a=200;
fn()
}
var a=100;
function fn(){
alert(a);
}
print();
闭包:自由变量的查找,是在函数定义的地方,向上级作用域查找,不是在函数执行的地方查找
- 函数作为返回值被返回
function create(){
let a = 100;
return function(){
console.log(a)
}
}
let fn = create();
let a = 200;
fn();
总结:
什么是闭包?
闭包是变量作用域的特殊情况
- 函数作为参数被传入
- 函数作为返回值被返回
闭包的作用与优缺点,闭包的引用场景
-
闭包是函数嵌套函数,所以形成了函数变量的局部作用域,避免变量被全局污染
-
当闭包作为返回值是引用的局部变量不会销毁
-
应用场景:
封装组件希望组件是局部作用域,事件引用,循环中形成局部作用域使用闭包应该注意 自由变量(函数中变量)查找是在函数定义的荻港,不是执行的地方
-
缺点:变量不会被销毁,可能会造成内存泄漏