Vòng đời bộ nhớ
Gần như giống nhau mọi ngôn ngữ: 3 giai đoạn.
- Cấp phát (Allocation): JS tự cấp phát khi khai báo biến.
- Sử dụng (Use): Đọc/ghi giá trị, truyền tham số hàm.
- Giải phóng (Release): Khi không còn cần thiết. Khó khăn nhất: xác định "không còn cần".
1) Cấp phát trong JS
var n = 989; // number var s = 'qwerty'; // string var o = { a: 1, b: null }; // object
2) Sử dụng
Đọc/ghi biến, property, truyền argument.
3) Giải phóng
GC theo dõi cấp phát, ước lượng khi nào không còn dùng để giải phóng. Vấn đề chung "xác định bộ nhớ còn cần" là undecidable (không thể thuật toán hóa hoàn toàn). JS dùng các thuật toán như Reference-counting, Mark-and-Sweep.