什么是闭包?
函数嵌套函数,内部函数可以引用外部函数的参数和变量,此处的a,b不会被垃圾回收机制回收,因为有相互引用的关系。
function aa(a){
let b = 5
return function(c){
console.log(a,b,c)
}
}
垃圾回收机制:
function aaa(){
var a = 1
}
aaa() // 执行之后,函数内的变量a就会被垃圾回收机制所收回
闭包有什么好处?应用在哪里?
- 希望一个变量长期驻扎在内存中(以上案例说明了)
- 避免全局变量污染
垃圾回收机制:调用函数之后就被销毁了,重新调用就不会有之前的计算结果,而是重新执行一次计算。
function aa(){
var a = 1
a++
alert(1)
}
aa() //2
aa() //2
针对以上问题,如何可以做到让变量可以累加?
function aa(){
var a = 1
return function(){
a++
console.log(a)
}
}
aa() //2
aa() //3
网友评论