Bom dia José! Tudo bem?
Meu caro, primeiro, eu preciso que você saiba o que é escopo:
Tudo que está entre {}
é um escopo. Podemos ter um escopo dentro, tudo bem, mas é importante saber o que é. tudo bem? Escopo.
Nós temos alguns tipos de variáveis no JS (var, let, const). No caso da variável do tipo var
, podemos dizer que ela se comporta de maneira global. Quando você declara uma variável deste tipo, ela tende a sair do escopo que foi declarada e subir até o primeiro escopo definido. Resumindo, não importa em qual lugar do código você declara uma variável tipo var, vai ser equivalente a declará-la no início do código. Chamamos esse comportamento de "hoisting".
Agora sua dúvida, como as duas variáveis são do tipo var e têm o mesmo nome e também porque esta função será acionada várias vezes no decorrer do código, é possível que, para garantir que não houvesse conflitos, o professor decidiu atribuir o valor 0 na variável antes de implementar a lógica da função.
Bom, espero ter ajudado. Bons estudos!