Maison > interface Web > js tutoriel > le corps du texte

Comment les déclarations et expressions de fonctions affectent-elles l'ordre d'exécution en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-10-24 18:35:47
original
156 Les gens l'ont consulté

How Do Function Declarations and Expressions Affect Execution Order in JavaScript?

Déclaration et ordre d'évaluation des fonctions JavaScript

Lorsque vous travaillez avec des fonctions JavaScript, il est crucial de comprendre la distinction entre les déclarations et expressions de fonctions et leur impact sur l'ordre d'exécution. Cela peut être illustré en examinant quatre exemples :

// 1
(function() {
    setTimeout(someFunction1, 10);
    var someFunction1 = function() { alert('here1'); };
})();

// 2
(function() {
    setTimeout(someFunction2, 10);
    function someFunction2() { alert('here2'); }
})();

// 3
(function() {
    setTimeout(function() { someFunction3(); }, 10);
    var someFunction3 = function() { alert('here3'); };
})();

// 4
(function() {
    setTimeout(function() { someFunction4(); }, 10);
    function someFunction4() { alert('here4'); }
})();
Copier après la connexion

Le premier exemple ne fonctionne pas en raison de l'ordre de compilation et d'exécution. En JavaScript, le code est compilé en deux phases : compilation et exécution.

Phase 1 : Compilation

Lors de la compilation, des variables sont créées. Dans l'exemple 1, la variable someFunction1 est déclarée après l'appel setTimeout. Par conséquent, lorsque le compilateur rencontre someFunction1 dans l'argument setTimeout, il ne peut pas trouver la variable.

Phase 2 : Exécution

Lors de l'exécution, l'interpréteur transmet la valeur de someFunction1 pour définirTimeout. Puisque la variable someFunction1 n'est toujours pas définie, l'interpréteur ne parvient pas à exécuter la fonction.

En revanche, les exemples 2, 3 et 4 fonctionnent tous car soit la déclaration de fonction est définie avant l'appel setTimeout (exemple 2), ou une fonction anonyme est transmise à setTimeout (Exemple 3), ou une référence à la fonction déclarée est utilisée (Exemple 4).

Déclarations de fonction vs expressions de fonction

Comprendre la différence entre les déclarations de fonction et les expressions est essentiel. Les déclarations de fonction (comme dans l'exemple 2) sont analysées lors de la compilation, tandis que les expressions de fonction (comme dans les exemples 1 et 3) sont évaluées lors de l'exécution. Cette différence peut impacter l'accès aux variables et l'ordre dans lequel le code est exécuté.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!