Maison >interface Web >js tutoriel >Pourquoi pouvez-vous appeler des fonctions JavaScript avant qu'elles ne soient définies ?

Pourquoi pouvez-vous appeler des fonctions JavaScript avant qu'elles ne soient définies ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 10:50:30262parcourir

Why Can You Call JavaScript Functions Before They Are Defined?

Comprendre le levage de fonctions en JavaScript

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn