闭包可以让一个函数访问并操作另一个函数在创建时作用域内的变量或者函数,即使创建时的作用域消失,仍然可以调用
var a = 10;
(function(){
console.log(a)
a = 5
console.log(window.a)
var a = 20
console.log(a)
})
执行顺序
{首先变量提升
var a = undefined
匿名函数变量提升
a =10}==>
{然后执行立即执行函数
在匿名函数内变量提升
log(undefined)
a =5
log(window.a)(全局变量a为10)
a =20
log(20)
}