2017-03-27 10 views
0

この例のdivはどうなりますか?私はそれを削除するか、それを掃除する必要がありますか?要素をDOM内の別の要素に置き換えると、要素をクリーンアップする必要がありますか?

var div = document.getElementById('myDiv'); 
var span = document.createElement('span'); 
span.textContent = 'hello world'; 
div.replaceWith(span); 

ごみ収集か何か?

+0

「クリーンアップ」とはどういう意味ですか?あるいは、この質問で「それはゴミ収集か何か」?あなたは正確に何をしようとしていますか? – Ionut

+1

js内の他のオブジェクトと同様に、それはどこかの参照を保持していますか?* DOM自体はトレースを失いますので、既にそこはクリーンですが、あなたの側に明確に。 – Kaiido

+0

'replacewith'に読み込まれませんでしたが、その後にスパンが2回存在する可能性があります – efkah

答えて

2

完了したら参照を解放すると仮定すると、ガベージコレクションされます。 DOMに明示的な「削除」などはありません。あなたのコードの末尾にそう

div変数がスコープの外に行くのではありませんか閉鎖によって保持されている場合、あなたが確認するために...

div = undefined; 

をしたいでしょうあなたはdivへの参照を保持しません。しかし、それが範囲外になり、閉鎖によって保持されない場合、それは必要ではありません。


サイドノート:それはむらかもしれためにDOMのreplaceWithはかなり新しいとサポートです。

+0

ありがとう!変数が範囲外になることはわかっていましたが、これらの要素が何らかの種類のプールなどでハングアップするかどうかはわかりませんでした。 – whiterook6

関連する問題