Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan
Cegah kebocoran memori dengan mengosongkan pemasa, mengehadkan penutupan dan membuang rujukan yang tidak digunakan; gunakan corak kecil yang boleh diamalkan oleh pemula.
Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 3 pelajaran.
Apakah kebocoran?
Matlamat: Elakkan kebocoran mudah.
- Sentiasa kosongkan pemasa
- Jangan simpan rujukan yang tidak digunakan
- Pastikan penutupan kecil
- Utamakan data yang berjangka hayat pendek

Kosongkan selang masa
Simpan pengenal selang masa; panggil clearInterval semasa pembersihan supaya pemasa dan tangkapannya boleh collected.
// Start an interval and then clear it to avoid leaks
function startTicker() {
// store id so we can clear later
const id = setInterval(function () {
// work would run every X ms; omitted for demo
}, 1000);
// simulate screen close / cleanup
clearInterval(id);
console.log("interval cleared");
}
startTicker();

Penutupan yang lebih kecil
Penutupan mengekalkan perkara yang ditangkapnya. Tangkap nilai kecil, bukannya keseluruhan objek apabila boleh.
// Avoid capturing large objects when only small data is needed
function makeReporter(bigArray) {
// BAD: store the whole array inside the closure
const large = bigArray;
return function reportLength() {
// Only the length is used
return large.length;
};
}
// BETTER: capture only what you need
function makeReporterBetter(bigArray) {
const count = bigArray.length; // small number
return function reportLength() {
return count;
};
}
const arr = new Array(1000).fill(0);
const bad = makeReporter(arr);
const good = makeReporterBetter(arr);
console.log("bad:", bad(), "good:", good());

Hadkan penimbal anda
Tatasusunan atau map yang berjangka hayat panjang boleh menyebabkan kebocoran memori jika berkembang tanpa had; trim atau reset secara berkala.
// A growing buffer can leak if never trimmed or reset
const buffer = []; // module-level array
function logItem(x) {
buffer.push(x); // grows forever if not managed
}
// Simulate usage
logItem("a");
logItem("b");
// FIX: trim or reset when size is over a limit
function trimBuffer(limit) {
if (buffer.length > limit) {
buffer.length = limit; // drop old items
}
}
trimBuffer(1);
console.log("buffer size:", buffer.length);

Contoh WeakMap
WeakMap berguna untuk melampirkan metadata tanpa menghalang pengumpulan sampah bagi objek kunci.
// WeakMap holds keys weakly: when the object is gone, the entry can be collected
const meta = new WeakMap();
function attachMeta(obj, info) {
meta.set(obj, info);
}
function readMeta(obj) {
return meta.get(obj); // undefined if not set or collected
}
let user = { name: "Ayla" };
attachMeta(user, { seen: true });
console.log("meta now:", readMeta(user));
// Later: drop the only strong reference
user = null; // after this, the object and its metadata can be GC'd at some point
console.log("object reference dropped (cannot show GC in console)");

Amalan mencegah kebocoran
Senarai semak:
- Simpan pengenal pemasa; clearInterval/clearTimeout semasa pembersihan.
- Tangkap hanya nilai yang diperlukan dalam penutupan.
- Trim/reset tatasusunan atau map yang berjangka hayat panjang.
- Utamakan data berjangka hayat pendek; lepaskan rujukan apabila selesai.

Kuiz pembersihan pemasa
Semakan pantas: Pemasa dan kebocoran.

Imbas kembali
Imbas kembali: Kosongkan pemasa, elakkan menangkap objek besar dalam penutupan, dan trim atau lepaskan rujukan yang berjangka hayat panjang. Pembersihan kecil menghalang aplikasi mesra pemula daripada mengalami kebocoran memori.

Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 3 pelajaran.
Apakah yang akan saya pelajari dalam “Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan”?
Cegah kebocoran memori dengan mengosongkan pemasa, mengehadkan penutupan dan membuang rujukan yang tidak digunakan; gunakan corak kecil yang boleh diamalkan oleh pemula. Anda berlatih Akademi JavaScript menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.
Berapa lamakah pelajaran “Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Asas Big-O, Laluan Panas berbanding Sejuk (Kemenangan Pemula)
- Mengelakkan Kebocoran — Penutupan, Pemasa dan Rujukan
- Pengenalan Pemprofilan (Node/DevTools) — tabiat pemasaan kecil