O post está errado. Dá pra verificar com um teste simples (é basicamente o mesmo código que tem lá, só que simplificado):
function f() {
var infoGlobal = "bla";
}
console.log(infoGlobal); // erro!
Esse código dá erro, veja. Mais precisamente, o erro é "ReferenceError: infoGlobal is not defined". Ou seja, a variável não está definida.
"Ah, mas é porque vc não executou a função"
Não, assim também dá o mesmo erro:
function f() {
var infoGlobal = "bla";
}
f();
console.log(infoGlobal); // erro!
Para que a variável esteja no escopo global, na verdade não devemos usar o var
(e nem o let
ou const
):
function f() {
infoGlobal = "bla";
}
f();
// agora funciona
console.log(infoGlobal);
Mas lembre-se que só funciona se a função for chamada. Ou seja, se for assim:
function f() {
infoGlobal = "bla";
}
// erro!
console.log(infoGlobal);
Dá erro do mesmo jeito. Afinal, a variável só é criada se a função for executada.
Por fim, vale sempre consultar a documentação. Lá deixa bem claro que uma variável declarada com var
dentro de uma função é local àquela função.
Esse é o problema da Internet, qualquer um pode escrever qualquer coisa e é difícil separar o joio do trigo. Neste caso eu acho bem grave porque me parece que o cara nem sequer testou o código (se testasse, veria o erro na hora).