如何优化JavaScript闭包内存使用?

如何优化JavaScript闭包内存使用?,javascript,memory-leaks,closures,Javascript,Memory Leaks,Closures,我有如下嵌套回调函数: 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; }); });

我有如下嵌套回调函数:

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;
      });
    });
  });
});

提前感谢您的意见

您应该能够通过打破每个函数的内部结构并查看“局部变量”(所有F12开发工具都有这个功能,向您展示IIRC哪些变量当前在作用域中)来找出保留的内容。您还可以取消嵌套函数,而不使用全局变量并将值作为参数传递。谢谢您的建议。是的,我宁愿将值作为参数传递,而不是使用全局变量:)