Maison >interface Web >js tutoriel >Pourquoi pouvez-vous appeler des fonctions JavaScript avant qu'elles ne soient définies ?
Pourquoi peut-on invoquer des fonctions avant leur déclaration en JavaScript ?
En JavaScript, un phénomène déroutant se produit lorsque des fonctions peuvent être invoquées avant même qu'elles ne soient formellement définies. Ce comportement est connu sous le nom de levage de fonction.
Le levage expliqué
Le levage sépare la déclaration d'une fonction de son exécution. Les déclarations de fonctions sont traitées pendant la phase de compilation et leurs identifiants sont liés au contexte global ou à la portée dans laquelle elles sont définies. Cela signifie que les fonctions peuvent être référencées et appelées avant même d'être explicitement définies dans le script.
Considérez le code suivant :
<code class="javascript">function fooCheck() { alert(internalFoo()); // Invoking internalFoo() before its definition return internalFoo(); // Same here function internalFoo() { return true; } // Function definition comes later } fooCheck();</code>
Dans ce code, internalFoo() est invoqué avant sa définition. Étonnamment, cela fonctionne car lors du levage, la déclaration de fonction est levée en haut de la portée, rendant son identifiant disponible pour référence tout au long du script.
Déclaration de fonction vs expression
Ce comportement s'applique uniquement aux déclarations de fonctions. Les expressions de fonction, telles que les fonctions anonymes définies avec le mot-clé var, ne présentent pas le même comportement de levage. Si nous modifions le code ci-dessus pour utiliser une expression de fonction, le script s'arrêtera :
<code class="javascript">var internalFoo = function () { return true; };</code>
Conclusion
Le levage de fonction est un aspect fondamental de JavaScript qui peut être déroutant au début. Grâce à cette compréhension, vous pouvez désormais naviguer dans les complexités de la programmation asynchrone et maintenir un flux de code efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!