1:什么是闭包?
闭包可以理解为:可以其他函数内部变量的函数
2:怎么实现一个闭包?
function fn1(){
let a=10
function fn2(){
console.log(a)
}
return fn2
}
let a=fn1() //此时a相当于fn2
a() //此时fn2就是闭包
3:闭包应用场景
1)函数外部想访问函数内部变量的场景
2)想让某个函数的变量值始终保存在内存中
4:闭包使用注意事项
1)闭包会让函数内部变量使用存在内存中,过多闭包会造成性能下降,IE浏览器上会造成内存泄漏
2)闭包可以改变函数内部的变量值,当把父函数也就是上例中的a当作对象使用要注意不要随意改变内部的变量值;
5:闭包的原理
利用作用域链层层往上查询的原理