Latihan 1 dari materi Memory Management di Performance — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Buat function findLeaks(codeSnippets) yang menerima array berisi potongan kode (string) dan mengembalikan daftar potensi memory leak.
- Siapkan array kosong untuk hasilnya.
- Periksa tiap potongan sesuai urutannya. Nomornya (
index) mulai dari 0.
- Kalau potongan itu mengandung
setInterval tapi gak mengandung clearInterval, tambahkan { snippet: index, leak: "interval-not-cleared" }.
- Kalau potongan itu mengandung
addEventListener tapi gak mengandung removeEventListener, tambahkan { snippet: index, leak: "listener-not-removed" }.
- Return array-nya. Kalau gak ada yang bocor, hasilnya
[].
Tulis key-nya dengan urutan snippet dulu, baru leak, karena hasilnya dibandingkan sebagai teks JSON. Cek interval dulu, baru listener.
Array snippets dan console.log di kode awal biarkan saja. Dia mencetak [{"snippet":0,"leak":"interval-not-cleared"},{"snippet":2,"leak":"listener-not-removed"}], tapi baris itu gak dinilai.
Yang dinilai nilai kembaliannya:
findLeaks(["setInterval(() => update(), 1000)"]) harus [{"snippet":0,"leak":"interval-not-cleared"}]
findLeaks(["const t = setInterval(() => {}, 1000); clearInterval(t)"]) harus []
- Ada satu cek tersembunyi: potongan yang memanggil
addEventListener tanpa removeEventListener harus menghasilkan leak: "listener-not-removed".