O coletor de lixo javascript descarta variáveis globais?
Estou confuso sobre isso desde que vi vários comentários diferentes. Estou lendo um livro de javascript onde ele menciona que definir variáveis globais como null é uma boa prática (supondo que não há outras referências) e o GC recupera a memória para essa variável em sua próxima varredura. Eu vi outros comentários que dizem que as variáveis globais nunca são descartadas pelo GC.
Além disso, ao programar o javascript em uma estrutura OOP, o que acontece se eu tiver algo assim (onde o jogo está no contexto global):
var game = {};
game.level = 0;
game.hero = new hero();
//do stuff
game.hero = null;
Uma vez que o herói vive dentro de um objeto que é armazenado no jogo, que está em um contexto global, se eu definir por exemplo herói para nulo, isso seria descartado pelo GC?