闭包:
- 全局变量特点: 全局变量常驻内存
- 局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
想实现的功能:
- 常驻内存
- 不污染全局
闭包: 函数嵌套函数,内部函数会调用外部函数的变量或参数,变量或参数不会被系统回收(不会释放内存)
闭包的写法: 函数嵌套函数,并return里面的函数,这样就形成了闭包
// 全局变量
var a = 123;
void main() {
print(a); // 123
fn() {
a++;
print(a);
}
fn(); // 124
fn(); // 125
fn(); // 126
printInfo() {
// 局部变量
var num = 123;
num++;
print(num);
}
printInfo(); // 124
printInfo(); // 124
printInfo(); // 124
// 闭包
fn() {
var a = 123;
return () {
a++;
print(a);
};
}
var b = fn();
b(); // 124
b(); // 125
b(); // 126
}