Cân nhắc tôi có trang web dưới đây được viết bằng HTML (cơ thể chỉ mục):Rác javascript nội tuyến có được thu thập khi cơ thể tài liệu được thay thế không?
<body>
<p>
...
</p>
<script>
function fn() {
// do stuff
}
</script>
</body>
Bây giờ, nếu tôi thay thế innerHTML
của document.body
từ JavaScript với tiếng nói, một div, do đó một phần cơ thể trở nên:
<body>
<div>
...
</div>
</body>
... sau đó là fn
đối tượng đủ điều kiện cho thu gom rác thải nếu không có tài liệu tham khảo để nó tồn tại bất cứ nơi nào trong phần còn lại của mã (bất kỳ ngữ cảnh)?
Khai báo hàm tạo một đối tượng hàm tách biệt ngữ nghĩa với nội dung của thẻ 'script' và lưu trữ tham chiếu đến đối tượng hàm đó trong biến' foo'; miễn là biến đó giữ tham chiếu đó, đối tượng hàm phải tiếp tục tồn tại. Tuy nhiên, điều đó không nói gì về việc có bất kỳ câu lệnh JavaScript "độc lập" nào sẽ tiếp tục tồn tại dưới mọi hình thức hay không, hoặc bất kỳ biểu diễn nào của chúng sẽ được giữ nguyên nếu các đối tượng hàm được thay thế. – supercat