Différence entre var functionName = function() {} et function functionName() {} en JavaScript
Bonjour, collègues ! Je suis un développeur front-end débutant et j'ai rencontré une confusion. Dans différents projets et tutoriels, je vois deux façons de déclarer des fonctions :
```javascript
// Méthode 1 : Function Expression (expression de fonction)
var myFunc = function() {
console.log("Hello from expression!");
};
// Méthode 2 : Function Declaration (déclaration de fonction)
function myFunc() {
console.log("Hello from declaration!");
}
```
À première vue, elles font la même chose. Mais quand j'ai commencé à écrire du code plus complexe, j'ai remarqué un comportement étrange. Par exemple, si j'appelle une fonction avant sa déclaration, une méthode fonctionne tandis que l'autre génère une erreur :
```javascript
// Cela fonctionne
sayHello(); // Affiche "Hello!"
function sayHello() {
console.log("Hello!");
}
// Cela génère une erreur
sayGoodbye(); // TypeError: sayGoodbye is not a function
var sayGoodbye = function() {
console.log("Goodbye!");
};
```
Pourquoi cela se produit-il ? Quelle est la différence fondamentale entre ces deux méthodes ?