次のようにコールバック関数をネストしました。
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;
});
});
});
});
ご意見をお寄せいただきありがとうございます。