什么是闭包
闭包代码示例:
function f1(){
let a =1
function f2(){
console.log(a)
}
f2()
}
f1()
由于f2函数并没有声明变量a,而是引用了f1函数中声明的变量a,这种内部函数与外部变量一起构成闭包,即闭包可以让你从内部函数访问到外部函数作用域。
闭包的用途是什么
js可以用闭包模拟私有方法,代码示例:
let f1 =function(){
let a =1
function f2(x){
a+=x
}
return {
add:function(){
f2(1)
},
mins:function(){
f2(-1)
},
value:function(){
return a
}
}
}
let a1 = f1()
let a2 = f1()
a1.add()
a1.add()
a1.value()
a2.value()
for (var i = 0; i < 6; i++) {
(function(i){
setTimeout(function (){
console.log(i)
},0)
})(i)
}
闭包的缺点是什么
- 由于私有变量不能销毁,所以会增大内存消耗
- 由于闭包涉及到跨域访问,所以会影响性能