Rumah > Soal Jawab > teks badan
var theThing = null;
var replaceThing = function () {
var originalThing = theThing;
var unused = function () {
if (originalThing)
console.log("hi");
};
theThing = {
longStr: new Array(1000000).join('*'),
someMethod: function () {
console.log(someMessage);
}
};
};
setInterval(replaceThing, 1000);
Soalan 1: Fungsi mengisytiharkan konteks apabila ia dibuat, dan mengemas kini pembolehubah tempatan ke dalam rantai skop apabila dilaksanakan . Bagaimana anda tahu bahawa fungsi yang tidak digunakan pasti akan merujuk kepada originalThing?
Soalan 2: Bagaimana untuk menerangkan kebocoran memori ini? Saya harap pakar dapat menjelaskannya dengan lebih terperinci?
过去多啦不再A梦2017-05-19 10:33:11
Soalan 1: Selepas pembolehubah dalam fungsi (replaceThing) meninggalkan skopnya, jika fungsi (replaceThing) digunakan sekali dan tidak dirujuk semula sehingga program dilaksanakan, selepas beberapa ketika akan dikitar semula .
Soalan 2: Jika anda melihat tindakan penugasan perkara, tindakan mencipta tatasusunan sedang dilakukan sepanjang masa 1,000,000 operasi gabungan dilakukan pada satu-satu masa, dan ia akan dilaksanakan secara berterusan mengikuti kadar pertumbuhannya, yang tidak lama lagi akan membawa kepada kebocoran memori.
theThing = {
longStr: new Array(1000000).join('*'),
someMethod: function () {
console.log(someMessage);
}
};