Avatar ·

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 ?