一、关于Dart闭包

 

1、全局变量特点: 全局变量常驻内存、全局变量污染全局

2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局

 

我们想实现的功能:

 

1.常驻内存

2.不污染全局

 

要实现上面功能就产生了闭包闭包可以解决这个问题.....

 

闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)

闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。

 

二、Dart闭包 示例demo

1、全局变量:常驻内存、全局变量污染全局


var a = 123;   //全局变量

void main() {
  print(a);

  fn(){
    a++;
    print(a);
  }
  fn();
  fn();
  fn();

}

 

输出:

124
125
126

 

2、局部变量:不常驻内存会被垃圾机制回收、不会污染全局

 

 printInfo() {
    var myNum = 123;
    myNum++;
    print(myNum);
  }

  printInfo();
  printInfo();
  printInfo();

输出:

124
124
124

3、闭包 常驻内存 不污染全局

 

  Function fn() {
    var a = 123; /*不会污染全局   常驻内存*/
    return () {
      a++;
      print(a);
    };
  }

  var b = fn();
  b();
  b();
  b();

输出:

124
125
126