1、全局变量特点: 全局变量常驻内存、全局变量污染全局
2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
我们想实现的功能:
1.常驻内存
2.不污染全局
要实现上面功能就产生了闭包,闭包可以解决这个问题.....
闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
var a = 123; //全局变量
void main() {
print(a);
fn(){
a++;
print(a);
}
fn();
fn();
fn();
}
输出:
124
125
126
printInfo() {
var myNum = 123;
myNum++;
print(myNum);
}
printInfo();
printInfo();
printInfo();
输出:
124
124
124
Function fn() {
var a = 123; /*不会污染全局 常驻内存*/
return () {
a++;
print(a);
};
}
var b = fn();
b();
b();
b();
输出:
124
125
126