定义:闭包就是能够读取其它函数内部变量的函数。由于在JavaScript中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。
原理:产生闭包的子函数被返回并赋值给一个全局变量,这导致子函数始终在内存中,而子函数的存在依赖于父函数,因此父函数也始终在内存中,不会在调用后,被垃圾回收机制(garbage collection)回收。
var name = "The Window";
var object = {
name : "My Object",
getName() {
console.log(this.name)
},
getName1() {
return function() {
// 匿名函数的this指向window
console.log(this.name)
};
},
getName2() {
let self = this
return function() {
console.log(self.name)
};
}
}
object.getName()
object.getName1()()
object.getName2()()