5

たとえば、次のようなプロパティとして別のオブジェクトを含むオブジェクトがあるとします。

var obj = {
    '1': {...},
    '42': {...}
};

objスコープから外れると、ネストされたすべてのオブジェクトが暗黙的に破棄されますか、それともそれらを明示的に反復する必要がありますdeleteか?

4

1 に答える 1

3

はい、別の参照がまだ存在しない限り:

var obj = {
    '1': {...},
    '42': {...}
};


var save = obj['1'];

obj = null; 

ガベージコレクションの後、他の参照が作成されていないと仮定すると、objおよびobj ['42']のスペースが回復され、保存された値はもちろん保持されます。

Mea culpa:delete obj私のオリジナルのコメントに記載されているように、objとして宣言されているため無効ですvar。グローバルobjであり、したがってグローバルオブジェクトのプロパティであった場合は、delete正常に機能していました。変数を効果的に削除するには、を使用しますobj = null。これをテストすることで私が学んだことの1つは、演算子とがまたはdeleteを返すことでした。truefalse

于 2012-05-16T01:51:04.797 に答える