Каково время жизни переменной в JavaScript, объявленной с помощью "var".
Я уверен, что это определенно не соответствует ожиданиям.
<script>
function(){
var a;
var fun=function(){
// a is accessed and modified
}
}();
</script>
Вот как и когда сборщик JavaScript собирает переменную a
? Поскольку a
является частью замыкания внутренней функции, в идеале она никогда не должна собирать мусор, поскольку внутренняя функция fun
может передаваться как ссылка на внешний контекст. Таким образом, fun
все еще должен иметь доступ к a
из внешнего контекста.
Если мое понимание верно, как происходит сборка мусора и как он обеспечивает достаточное пространство памяти, поскольку сохранение всех переменных в памяти до тех пор, пока выполнение программы не может быть надежным?