Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como o código foi lido?

Eu não entendi como uma parte do código foi lida, executada:

var mostraBrasil = true;

function trocaBandeira() {
    if(mostraBrasil){
        desenhaBandeiraBrasil();
    }else{
        desenhaBandeiraAlemanha();
    }

    mostraBrasil = !mostraBrasil // mostraBrasil = false
}

Eu sempre pensei que o código era lido de cima para baixo, sem ficar voltando, mas olha o qe acontece:

Primeiro o mostraBrasil já recebe o valor de true.

Na função o desenhaBandeiraBrasil é feito, mas o desenhaBandeiraAlemanha não, já que o mostraBrasil é true. Até aí ok.

Depois o mostraBrasil é false, então o código volta lá para cima ( no else ) para executar o desenhaBandeiraAlemanha, daí desce de novo, acabando os comandos, assim, terminando de executar a function trocaBandeira().

Essa volta para executar comandos anteriores sempre pode acontecer? E é só dentro de uma função?

2 respostas
solução!

Oi Maria,

O mecanismo do javascript cria um contexto de execução antes de executar seu código. A questão é que o JavaScript será primeiro "lido" pelo compilador, que armazena as funções e você pode chamá-las a qualquer momento no script.

Segue um artigo muito interessante que detalhe a fundo o assunto: https://medium.com/better-programming/how-javascript-works-1706b9b66c4d

Obrigada, Otávio! Ajudou muito.