テイクこのコードは:参照が返されない場合、スコープは終了しますか?例えば
var test = (function(){
var name = 'rar';
return function foo(){
console.log('test');
};
}());
foo
内側の範囲内name
への参照なしtest
に戻ります。 name
はどうなりますか?それは破壊されていますか?または、それは存在し続け、返された関数にぶら下がっていますが、アクセスできません。式の一部ではなかったname
かのように最初のケースでは、以下を実行することのようになります?:
var test = function foo(){
console.log('test');
};
ここでは別のケースです:
var test2 = (function(){
var name = 'rar';
var age = '20';
return function foo(){
console.log(age);
};
}());
age
がfoo
によって参照されますと閉鎖を形成することになります。しかし、name
はまだ何も参照されていません。この場合、name
はどうなりますか?それは破壊されていますか?または、それは存在し続け、返された関数にぶら下がっていますが、アクセスできません。
http://stackoverflow.com/a/864549/2269749 – BlitZ
@CORRUP回答は、実装がどのようになるかを示しているようです。つまり、最悪の場合、「名前」はそのままになります。そうですか? – Joseph
はい。ブラウザーには異なるJS GCエンジンがあり、それぞれが異なる場合があります。メモリリークを防ぐため、オプションとして 'name = null'を考慮してください。 – BlitZ