Maison > Article > interface Web > Comment fonctionne javascript ?
JavaScript est un langage de script écrit sous forme de texte. Il est principalement utilisé pour contrôler le comportement des pages Web dans les navigateurs Web et rendre les pages dynamiquement interactives. Dans cet article, nous en apprendrons davantage sur le fonctionnement de JavaScript en explorant son flux de travail.
Le workflow de JavaScript comprend principalement trois parties : l'analyse, la compilation et l'exécution. Parmi eux, la phase d'analyse convertit le code JavaScript en un arbre de syntaxe abstraite (AST) ; la phase de compilation génère un bytecode exécutable basé sur l'AST et la phase d'exécution effectue l'exécution réelle du code ;
Parsing est le processus de conversion de code textuel en un arbre syntaxique. Pendant le processus d'analyse, le code JavaScript est d'abord divisé en jetons par le tokenizer. À ce stade, tous les espaces, tabulations et nouvelles lignes sont ignorés et ne participent pas à la génération des jetons. Le jeton est la plus petite unité d'analyse syntaxique. Chaque jeton représente une unité sémantique du code, telle que des noms de variables, des nombres, des mots-clés de fonction, etc.
Pendant le processus d'analyse, le moteur JavaScript construira un arbre de syntaxe abstrait basé sur les règles grammaticales du code pour une compilation et une exécution ultérieures du code. Un arbre de syntaxe abstraite est une structure arborescente utilisée pour décrire la sémantique d'un programme, constituée d'une série de nœuds et d'arêtes. Chaque nœud de l'arborescence représente une structure grammaticale (telle que des variables, des fonctions, des opérateurs, etc.) dans une instruction ou une expression.
La phase de compilation convertit principalement l'arbre de syntaxe abstraite généré par la phase d'analyse en bytecode. Le bytecode est un code binaire dans un état intermédiaire Contrairement aux instructions machine, l'exécution du bytecode nécessite le support d'un interpréteur ou d'une machine virtuelle.
Pendant le processus de compilation, le moteur JavaScript effectuera d'abord l'optimisation, y compris l'analyse statique et l'optimisation de l'exécution. L'analyse statique réduit les calculs redondants et la transmission de données au moment de l'exécution en analysant la structure du code, les relations de référence, la transmission du flux de données et d'autres informations. L'optimisation de l'exécution consiste à ajuster dynamiquement la stratégie d'exécution en fonction de l'état d'exécution du code, comme l'ajout de mise en cache et l'intégration aux boucles.
Une fois l'optimisation terminée, le compilateur convertit l'arbre de syntaxe abstraite en bytecode et le stocke en mémoire, réduisant ainsi le processus d'interprétation à chaque exécution. L'efficacité d'exécution du bytecode est supérieure à celle de l'interpréteur, mais il existe toujours une certaine perte de performances par rapport au code machine généré par compilation.
La phase d'exécution est le processus de conversion du bytecode généré lors de la phase de compilation en code machine et de son exécution. Le processus d'exécution de JavaScript est monothread, ce qui signifie que tous les codes sont exécutés séquentiellement dans le même thread. Par conséquent, tous les événements et opérations sont traités séquentiellement dans une file d’attente.
Pendant le processus d'exécution, étant donné que le code JavaScript peut accéder aux API fournies par les navigateurs tels que DOM et BOM, le moteur JavaScript maintiendra une interface interactive avec le navigateur. Lorsqu'un événement est déclenché, le moteur JavaScript récupère l'événement de la file d'attente des événements et exécute la fonction de rappel correspondante. Le code de la fonction de rappel entrera à nouveau dans le processus d'analyse, de compilation et d'exécution jusqu'à ce que tous les codes soient exécutés.
Pendant le processus d'exécution, le moteur JavaScript conservera également une zone mémoire pour stocker les variables, les objets et autres données. Lorsqu'une variable est déclarée, le moteur JavaScript alloue une mémoire pour stocker la valeur de la variable. Lorsqu'une variable n'est plus utilisée, le moteur JavaScript récupérera automatiquement la mémoire de la variable pour éviter les fuites de mémoire.
Summary
JavaScript est un langage de script de haut niveau avec des règles grammaticales strictes et des structures sémantiques complexes. Bien que l'efficacité d'exécution de JavaScript ait diminué par rapport aux langages compilés, il présente les avantages de la flexibilité et de l'interactivité et constitue un élément indispensable du développement Web.
Cet article présente en détail le mécanisme d'exécution de JavaScript sous trois aspects : l'analyse, la compilation et l'exécution. Comprendre le flux de travail de JavaScript est d'une grande importance pour l'optimisation des performances et le débogage des programmes JavaScript.
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!