Avatar ·

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

Olá, colegas! Sou um desenvolvedor front-end iniciante e me deparei com uma confusão. Em diferentes projetos e tutoriais, vejo duas maneiras de declarar funções: ```javascript // Maneira 1: Function Expression (expressão de função) var myFunc = function() { console.log("Hello from expression!"); }; // Maneira 2: Function Declaration (declaração de função) function myFunc() { console.log("Hello from declaration!"); } ``` À primeira vista, elas fazem a mesma coisa. Mas quando comecei a escrever código mais complexo, notei um comportamento estranho. Por exemplo, se eu chamo a função antes de sua declaração, uma maneira funciona, enquanto a outra gera um erro: ```javascript // Isso funciona sayHello(); // Exibe "Hello!" function sayHello() { console.log("Hello!"); } // Isso gera um erro sayGoodbye(); // TypeError: sayGoodbye is not a function var sayGoodbye = function() { console.log("Goodbye!"); }; ``` Por que isso acontece? Qual é a diferença fundamental entre essas duas?