Vòng đời của biến trong JavaScript, được khai báo bằng "var". Tôi chắc chắn, nó chắc chắn không theo mong đợi.Tuổi thọ của các biến JavaScript
<script>
function(){
var a;
var fun=function(){
// a is accessed and modified
}
}();
</script>
Đây là cách thức và thời điểm JavaScript thu thập biến số a
? Vì a
là một phần của việc đóng chức năng bên trong, nên lý tưởng không bao giờ nên thu gom rác, vì hàm bên trong fun
, có thể được chuyển như một tham chiếu đến một ngữ cảnh bên ngoài. Vì vậy, fun
vẫn có thể truy cập a
từ ngữ cảnh bên ngoài.
Nếu hiểu biết của tôi là chính xác, thì việc thu gom rác sẽ xảy ra như thế nào và đảm bảo có đủ dung lượng bộ nhớ như thế nào, vì giữ tất cả các biến trong bộ nhớ cho đến khi thực thi chương trình có thể không được?
Đây là một câu hỏi tuyệt vời btw. Nó chỉ ra rằng đóng cửa chính nó không phải là điều duy nhất được tổ chức trong bộ nhớ cho đến khi đóng cửa là GC'ed. Toàn bộ chuỗi phạm vi của hàm cũng vậy. Dường như có một số tranh cãi, nhưng một số suy nghĩ bổ sung dường như chỉ ra rằng mọi khai báo hàm trong JavaScript là một sự đóng, liên quan đến phạm vi toàn cầu. Tuy nhiên có một ngoại lệ [xem câu trả lời này] (http://stackoverflow.com/a/30252865/511795) – Shanimal