0

我有嵌套的回调函数如下:

func1(a, function(b){
  var aa;
  func2(c, function(d){
    var cc;
    func3(e, function(f){
      var ee;
      // setup event handler responding to the message
      process.on('message',function(){
        var g = b;
      });
    });
  });
});

局部变量“g”引用顶级闭包参数“b”。

在这种情况下,

  • 所有闭包变量和参数(aa,cc,ee,a,b,c,d,e,f)都保存在内存中吗?
  • 还是只保留顶级闭包变量和参数(aa,a,b)?

下面的代码如何只保留 'b' 的值,而不是像上面的代码一样保留所有闭包环境变量?

var global_b;
func1(a, function(b){
  global_b = b;
  b = null; // free the parameter 'b'
  func2(c, function(d){
    func3(e, function(f){
      // setup event handler responding to the message
      process.on('message',function(){
        var g = global_b;
      });
    });
  });
});

提前感谢您的意见!

4

0 回答 0