- 闭包是一个方法(对象)
- 闭包定义在其他方法内部
- 闭包能够访问外部方法内的局部变量,并持有其状态(这是闭包最大的作用,可以通过闭包的方式,将其暴露出去,提供给外部访问)
内部指的是当前main或者是当前的执行函数,而外部指的是要调用的函数
获取闭包,实际上就是调用一个外部函数让外部函数返回一个函数赋值给内部一个变量,可以通过这个变量来访问外部函数的已经执行完超出作用域的变量
// 内部可以访问外部方法内的局部变量 count
void main() {
// 获取闭包
var func = a();
for (var i = 0; i < 5; i++) {
// 执行闭包
func();
}
print('-' * 40);
var func1 = b();
for (var i = 0; i < 5; i++) {
func1();
}
}
// 声明一个无返回值类型、无参数的函数
a(){
int count = 0;
// 内部声明一个函数 : 闭包
printCount(){
// 内部可以访问外部方法内的局部变量 count
print(count++);
};
// 返回闭包
return printCount;
}
b(){
int count = 22;
// 声明一个闭包
// (){
// print(--count);
// }
// 将闭包返回
return (){
print(--count);
};
}