如何优化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)
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哪些变量当前在作用域中)来找出保留的内容。您还可以取消嵌套函数,而不使用全局变量并将值作为参数传递。谢谢您的建议。是的,我宁愿将值作为参数传递,而不是使用全局变量:)