什么是闭包一个变量已经过了它的作用域但还能得到它,这就是闭包例如var a = (function() { var _foo = 1 return { get: function(){ return _foo }, set: function(v){ _foo = v } }})()console.log(‘闭包 get’, a.get())a.set(‘hello’)console.log(‘闭包 get’, a.get())1,a 是这个匿名函数调用的结果,这个匿名函数只会执行一次,这个匿名函数结束后 _foo 变量理论上应该就消失了2,但是这个匿名函数返回一个对象,这个对象中的 get() 方法返回了这个对象外面的 _foo 变量3,通过 a.get() 依然能得到这个 _foo 变量,说明这个变量并没有消失,但是只能通过 a.get() 得到这个变量