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.