Пока у вас есть способ получить доступ к некоторому значению, это значение не будет собираться мусором. То есть для любого правильно реализованного сборщика мусора для JavaScript вы никогда не найдете значение, уничтоженное сборщиком мусора, если вы можете получить к нему доступ.
Поскольку функции не создаются и не возвращаются из createPerson
это правда, что замыкание, созданное с помощью вызова createPerson
, будет собирать мусор, поэтому локальная переменная замыкания localPerson
будет уничтожена. Однако значение, на которое ссылается эта переменная, не будет уничтожено, поскольку оно все еще доступно через переменную globalPerson
.