1
resposta

HOISTING

Fala galera

no final da aula 07 Expressão de função, a ju escreve esse codigo console.log(apresentar);

function apresentar() {
    return "ola"
    
}

console.log(soma(1, 1));
soma = function(num1, num2) { return num1 + num2 }

mas eu nao entendi porque no JS aparece um erro ao rodar: console.log(soma(1, 1)); acho que no video nao ficou suficientemente claro porque acontece este erro.

alguem pode me ajudar com essa duvida?

aula : https://cursos.alura.com.br/course/fundamentos-javascript-tipos-variaveis-funcoes/task/94095

1 resposta

Boa noite!

O erro ocorre porque, ao usar uma expressão de função, o javascript não utiliza o hoisting para ler a função antes de chamá-la. Basicamente, nesse código que você anexou, o javascript vai ler primeiro o console.log e tentar executá-lo e apenas depois vai entender que é uma função. Para consertar esse erro, basta jogar a expressão para cima do console.log, dessa forma:

soma = function (num1, num2) {
  return num1 + num2;
};
console.log(soma(1, 1));

Ou transformá-lo em uma função escrita de outra forma, assim:

console.log(soma(1, 1));

function soma(num1, num2) {
  return num1 + num2;
}

Dessa segunda forma, o javascript irá ler primeiro a função antes do console.log, fazendo com que, na hora que ela for chamada, ela já esteja determinada.

Espero que tenha esclarecido sua dúvida. Estou a disposição!