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

Dúvida sobre atividade em JavaScript

No curso Lógica de programação I: comece na carreira com JavaScript, aula "Pratique resolvendo problemas do seu dia a dia", surgiu uma dúvida no exercício usado durante para a explicação.

O código abaixo foi usado como exemplo. Conforme o texto:

Para facilitar, vamos escrever um simples código com três funções: a primeira função chama a segunda função, e a segunda chama a terceira. Além disso, dentro de cada função imprimimos uma mensagem antes e depois de chamar a próxima. Dessa forma será possível que você veja como as chamadas são "empilhadas" e, quando a terceira função é chamada, o caminho inverso começa a ser percorrido.

<script>
var primeira = function() {
    console.log("1 - antes");
    segunda();
    console.log("1 - depois");
};

var segunda = function() {
    console.log("2 - antes");
    terceira();
    console.log("2 - depois");    
};

var terceira = function() {
    console.log("3");
};

primeira();
</script>

Mas o que faz o caminho inverso ser percorrido? A terceira função não chama nenhuma outra.É algo automático? Fiquei perdido nesse ponto.

4 respostas
solução!

Você postou a dúvida de um curso em outro. Há dois cursos de lógica. O antigo e o novo. Ainda assim, vamos a sua dúvida.

Quando uma função executa até o fim, ou seja, todas as suas instruções são executadas ela é removida da pilha.

Era essa sua dúvida?

Mas pelo resultado do código, só parte da instrução é executada:

1 - antes funcoes.html:5 2 - antes funcoes.html:12 3 funcoes.html:19 2 - depois funcoes.html:14 1 - depois funcoes.html:7

Ao meu entender, por exemplo, quando o código chama a primeira função, ela é executada somente até o ponto em que a segunda função é requisitada. Ou seja, o código vai exibir no console.log somente a primeira frase "1 - antes", excluindo a segunda frase no console.log "1 - depois".

O mesmo vale para a segunda função. Quando esta chama a terceira, a frase "2 - depois" não deveria aparecer. Somente quando o caminho reverso for ativado.

Mas quando a terceira função é chamada, o que faz o código realizar o caminho inverso? Conforme o exemplo acima, depois de exibir o "3", o navegador começa o caminho inverso.

O que faz o navegador entender que nesse ponto deverá exibir no consolel.log as frases "2 - depois" e "1 - depois"?

Quando uma função acaba e se ela foi chamada por outra a outra continua sua execução.

Talvez seja legal você fazer o novo curso de lógica. Só te peço para não postar dúvida do curso antigo no novo que acaba dando um nó no povo do fórum.

Tudo bem Flavio. Obrigado pela ajuda.