"var" ile bildirilen, bir değişkenin JavaScript'deki ömrü nedir. Elbette, kesinlikle beklentiye göre değil. İşteJavaScript değişkenlerinin ömür boyu
<script>
function(){
var a;
var fun=function(){
// a is accessed and modified
}
}();
</script>
nasıl ve JavaScript çöp değişkeni a
topluyor zaman? a
, iç fonksiyonun kapanmasının bir parçası olduğundan, ideal olarak asla çöp toplanmamalı, çünkü iç işlev fun
, harici bir içeriğe başvuru olarak iletilebilir. fun
Yani dış bağlamdan hala a
erişmek mümkün olmalıdır. Benim anlayış doğru ise
, nasıl çöp toplama sonra meydana geliyor ve nasıl savunulabilir olmayabilir programın yürütülmesi kadar bellekte tüm değişkenleri tutmak beri, yeterli bellek alanı olması sağlıyor?
Bu harika bir soru btw. Kapağın kendisinin, kapanış GC'ed oluncaya kadar bellekte tutulan tek şey olmadığını belirtmektedir. Fonksiyonun tüm kapsam zinciri de öyle. Bazı tartışmalar var gibi görünmektedir, ancak bazı ek düşünceler, JavaScript'deki her işlev bildiriminin, global kapsama göre bir kapatma olduğunu gösterecektir. Ancak bir istisna vardır (bu cevaba bakınız) (http://stackoverflow.com/a/30252865/511795) – Shanimal