Avatar ·

Diferença entre var functionName = function() {} e function functionName() {} em JavaScript

Olá a todos! Comecei a estudar JavaScript e me deparei com uma situação que não entendo. Em diferentes exemplos de código, vejo duas maneiras de declarar funções que parecem semelhantes, mas se comportam de forma diferente. Primeira maneira: ```javascript var myFunc = function() { console.log("Olá!"); }; ``` Segunda maneira: ```javascript function myFunc() { console.log("Olá!"); } ``` À primeira vista, elas fazem a mesma coisa — criam uma função chamada `myFunc`. Mas notei que, se chamar a função antes de sua declaração, a primeira maneira gera um erro, enquanto a segunda funciona. Por exemplo: ```javascript // Funciona test1(); // Exibe "Funciona!" function test1() { console.log("Funciona!"); } // Erro test2(); // TypeError: test2 is not a function var test2 = function() { console.log("Não funciona!"); }; ``` Por que isso acontece? Existem outras diferenças entre elas? Qual maneira é melhor usar e em quais casos? Agradeço por uma explicação detalhada para iniciantes.