什么是闭包?
闭包产生原因:
1.全局变量特点:全局变量常驻内存,全局变量污染全局
2.局部变量特点:不常住内存会被垃圾机制回收、不会污染全局
闭包定义:
函数嵌套函数,内部函数会调用外部函数的变量或参数,变量或参数不会被系统同回收
闭包的写法:
函数嵌套函数,并return 里面的函数,这样就形成了闭包。
var a = 123;
void main() {
// 全局变量会一直占用内容
// print(a);
// fn() {
// a++;
// print(a);
// }
// fn();// 123
// fn();//125
// fn();//126
// printInfo() {
// // 局部变量 内次执行都会返回124
// var myNum = 123;
// myNum++;
// print(myNum);
// }
// printInfo();// 124
// printInfo();// 124
// 闭包
fn() {
var a = 123; // 不会污染全局 常驻内存
return () {
a++;
print(a);
};
}
var b = fn();
b();//124
b();//125
b();//126
}