Время жизни переменных JavaScript

Каково время жизни переменной в JavaScript, объявленном с "var". Я уверен, это определенно не согласно ожиданию.

<script>
function(){
   var a;
   var fun=function(){
     // a is accessed and modified  
     }
}();


</script>

Здесь, как и когда делает JavaScript, собирают "мусор" переменная a? С тех пор a часть закрытия внутренней функции, оно идеально никогда не должно собираться "мусор", начиная с внутренней функции fun, может быть передан как ссылка на внешний контекст. Так fun должен все еще смочь получить доступ a от внешнего контекста.

Если мое понимание корректно, как сборка "мусора" происходит затем, и как это удостоверяется, чтобы иметь достаточно пространства памяти, начиная с хранения всех переменных в памяти, пока осуществление программы не могло бы быть надежным?

9
задан Bill the Lizard 21 June 2011 в 05:02
поделиться

2 ответа

Спецификация ECMAScript не определяет, как должен работать сборщик мусора, а только говорит, что если идентификатор доступен (через прямой указатель или замыкание), он не должен собираться в сборщик мусора.

Прочтите эту статью о разрешении идентификаторов, замыканиях, цепочке областей видимости и сборке мусора в ECMAScript.

Надеюсь, это поможет

4
ответ дан 3 November 2019 в 07:12
поделиться

'a' не будет собираться мусором, пока есть внешние ссылки на 'fun'. Браузер проверяет, достаточно ли памяти, запрашивая больше памяти у ОС.

1
ответ дан 3 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: