什么是闭包
image.png- 只要一个函数不在他本身的词法作用域中运行,就是一个闭包
-
闭包也就是函数所在的词法作用域不会被销毁
image.png
为什么这里会说javascript引擎极有可能依然保留这个结构,而不是会保留这个结构呢,js是否是根据词法作用域来做垃圾回收,还是可以根据变量的引用来做垃圾回收呢?
闭包的作用
我觉得闭包最大的作用还是封装模块化,通过闭包的方式,让被封装在内部的变量,可以在外部访问。有点像java中的私有化变量,通过公开的函数来操作变量
// java 代码
public class A {
private String name = 'xxx';
public String getName () {
return name;
}
public String setName (name) {
this.name = name;
}
}
A a = new A();
a.setName('xxxx');
a.getName();
// js 代码
function a() {
var name = 'xxx'
function getName () {
return name;
}
function setName (newName) {
name = newName
}
return {
getName,
setName
}
}
var aHandler = a()
aHandler.setName('xxx')
aHandler.getName()
网友评论