recherche
Maisoninterface Webjs tutorielContexte d'exécution JavaScript – Comment le code JS s'exécute dans les coulisses

Avant de comprendre ce qu'est le contexte d'exécution JavaScript, nous devons savoir comment et dans quels environnements nous pouvons exécuter du code JavaScript.

Tout d'abord, nous pouvons exécuter JavaScript dans deux environnements :

  1. Par le navigateur
  2. Grâce à Node.js

Comment le code JavaScript s’exécute-t-il sur notre ordinateur ?

Lorsque nous écrivons du code JavaScript sur notre ordinateur et que nous essayons ensuite de l'exécuter, le code va d'abord soit dans le navigateur, soit dans Node.js.

Cependant, le code JavaScript que nous écrivons n'est pas directement compris par le navigateur ou Node.js. À ce stade, les deux envoient le code au moteur JavaScript intégré. Il existe différents types de moteurs, par exemple :

  1. Moteur V8 dans Google Chrome,
  2. SpiderMonkey dans Mozilla Firefox,
  3. Moteur V8 dans Node.js, etc.

Ensuite, le moteur JavaScript compile le code JavaScript en code machine. Ce code machine est ensuite envoyé à l'ordinateur, qui l'exécute, et nous voyons le résultat affiché.

En tant que programmeurs, nous devons bien comprendre cette étape intermédiaire, c'est-à-dire comment le moteur JavaScript compile le code JavaScript en code machine.

Nous devons maintenant comprendre comment fonctionne le moteur JavaScript. Le moteur JavaScript fonctionne de deux manières pour convertir le code en code machine. Le premier est l’interprétation et le second est la compilation. Alors, que sont l'interprétation et la compilation ?

Qu’est-ce que l’interprétation et comment fonctionne-t-elle ?

L'interprétation est le processus de lecture de tout le code source écrit dans un langage de haut niveau ligne par ligne et de conversion de chaque ligne en code machine immédiatement après sa lecture. S'il y a une erreur lors de la lecture d'une ligne de code, le processus s'arrête là, ce qui permet au programmeur d'identifier facilement l'erreur. Cela rend le débogage simple. Cependant, comme ce processus lit le code ligne par ligne, il est comparativement plus lent.

Qu’est-ce que la compilation et comment ça marche ?

La compilation est le processus de conversion simultanée de tout le code source écrit dans un langage de haut niveau en code machine. Dans ce cas, même s'il y a des erreurs dans le code, il sera toujours compilé et n'affichera les erreurs qu'au moment de l'exécution. En conséquence, il devient plus difficile pour le programmeur d’identifier les erreurs, ce qui rend le débogage plus difficile. Cependant, comme l’intégralité du code source est convertie en code machine en une seule fois, ce processus est comparativement plus rapide. Alors maintenant, la question se pose : JavaScript est-il un langage compilé ou interprété ?

JavaScript est-il un langage compilé ou interprété ?

Au départ, JavaScript était avant tout considéré comme un langage interprété. Cependant, comme ce processus était assez lent, les moteurs JavaScript modernes ont commencé à utiliser une nouvelle technique combinant à la fois interprétation et compilation, connue sous le nom de compilation juste à temps (JIT). Ce processus combine interprétation et compilation pour convertir le code en code machine. En conséquence, il est beaucoup plus rapide et plus facile de déboguer par rapport aux anciennes méthodes.

Pour comprendre le fonctionnement de la compilation Just-In-Time (JIT) de JavaScript, nous devons comprendre le contexte d'exécution de JavaScript. Essayons maintenant de comprendre le contexte d'exécution de JavaScript.

Contexte d'exécution JavaScript

Tout d'abord, jetez un œil à l'exemple de code suivant.

Exemple de code

var a = 1;

function one() {
  console.log(a);

  function two() {
    console.log(b);

    var b = 2;

    function three(c) {
      console.log(a + b + c);
    }

    three(4);
  }

  two();
}

one();

Sortir

1
undefined
7

Lorsque nous avons exécuté le code, nous avons essayé d'imprimer la variable b avant qu'elle ne soit déclarée dans la fonction two(), et la sortie n'était pas définie. Cependant, aucune erreur ne s'est produite. La question se pose : comment la variable b avait-elle la valeur indéfinie ? La réponse réside dans le contexte d'exécution JavaScript. Nous allons maintenant explorer le contexte d'exécution JavaScript plus en détail.

Il existe deux types de contexte d'exécution en JavaScript :

  1. Contexte d'exécution global
  2. Contexte d'exécution de la fonction

Chaque contexte d'exécution passe par deux phases : la phase de création et la phase d'exécution.

Contexte d'exécution global

Lorsque nous exécutons du code JavaScript, la première chose qui se produit est le contexte d'exécution global. Ce contexte passe d'abord par sa Phase de Création, où plusieurs choses se produisent :

Phase de création

  1. Un Objet Global est créé.
  2. Un cet objet est créé et se voit attribuer la valeur de l'objet global.
  3. Un objet variable est créé, où toutes les fonctions et variables sont déclarées. Les variables se voient attribuer une valeur indéfinie et les fonctions se voient attribuer des références à leurs fonctions respectives.

Une fois la phase de création terminée, le contexte d'exécution global passe à la phase suivante : la phase d'exécution, où d'autres étapes se produisent.

Phase d'exécution

  1. Les variables qui ont été déclarées lors de la phase de création et initialisées avec undefined se voient désormais attribuer leurs valeurs respectives.
  2. Les fonctions déclarées lors de la phase de création, qui étaient stockées comme références, sont maintenant appelées et exécutées.

Contexte d'exécution de fonction

Lorsque les fonctions référencées lors de la phase d'exécution du contexte d'exécution global sont appelées, chaque fonction crée son propre contexte d'exécution de fonction. Tout comme le Contexte Global d'Exécution, le Contexte d'Exécution de Fonction passe également par une Phase de Création, où se déroulent plusieurs étapes :

Phase de création

  1. Un objet paramètre est créé pour la fonction.
  2. Un cet objet est créé et se voit attribuer la valeur de l'objet global.
  3. Un objet variable est créé, où toutes les fonctions et variables sont déclarées. Les variables se voient attribuer une valeur indéfinie et les fonctions se voient attribuer des références à leurs fonctions respectives.

Une fois la phase de création terminée, le contexte d'exécution de la fonction passe à la phase d'exécution, où d'autres étapes se produisent.

Phase d'exécution

  1. Les variables déclarées lors de la phase de création, qui ont été initialisées avec undefined, se voient désormais attribuer leurs valeurs respectives.
  2. Les fonctions déclarées lors de la phase de création sont maintenant appelées et exécutées.

Contexte d'exécution de fonction dans les fonctions imbriquées

Lorsque des fonctions sont appelées au sein d'autres fonctions, un nouveau contexte d'exécution de fonction est créé pour chacune de ces fonctions. Chaque contexte d'exécution de fonction passe ensuite par la phase de création et la phase d'exécution. Ce processus se poursuit pour chaque fonction appelée à l'intérieur d'une autre fonction, et chaque fonction passera par ces phases séparément.

Regardons le schéma ci-dessous.

JavaScript Execution Context – How JS Code Runs Behind the Scenes

Nous avons vu que le contexte d'exécution global et le contexte d'exécution de fonction passent par certaines étapes. La seule différence est que, dans le contexte d'exécution global, la première étape consiste à créer l'objet global, alors que, dans le contexte d'exécution de fonction, la première étape consiste à créer un objet paramètre pour la fonction.

Maintenant, la question se pose : comment JavaScript gère-t-il ces Contextes d'Exécution lorsqu'ils sont créés à la fois pour le contexte global et pour chaque fonction ?

Gestion des contextes d'exécution avec la pile d'exécution

Pour gérer ces contextes, JavaScript utilise une structure de données appelée Execution Stack. La pile d'exécution stocke les contextes à la manière d'une pile : d'abord, le contexte d'exécution global, suivi de chaque contexte d'exécution de fonction. Lorsque tous les contextes d'exécution sont stockés dans la pile, JavaScript les traite un par un, en commençant par le haut de la pile.

Portée avec let et const

Il est important de noter que lorsque nous déclarons des variables avec let ou const dans une portée globale ou de fonction, ces variables ne sont pas stockées dans l'objet variable pendant la phase de création, et elles ne sont pas initialisées avec undefined. Au lieu de cela, ces variables sont directement déclarées et leurs valeurs affectées lors de la phase d'exécution.

Considérez l'exemple de code suivant :

Exemple de code

var a = 1;

function one() {
  console.log(a);

  function two() {
    console.log(b);

    var b = 2;

    function three(c) {
      console.log(a + b + c);
    }

    three(4);
  }

  two();
}

one();

Si nous exécutons ce code, nous rencontrerons une ReferenceError. En effet, nous essayons d'imprimer la valeur de la variable b avant de la déclarer, et puisque b est déclaré en utilisant const, elle se comporte différemment des variables normales. Les variables déclarées avec const ou let ne sont pas stockées dans l'objet variable pendant la phase de création, c'est pourquoi nous obtenons une erreur lorsque nous essayons d'y accéder avant qu'une valeur ne leur soit attribuée.

Conclusion

J'espère que cette explication du fonctionnement de JavaScript et de ce qui se passe pendant ses phases de contexte d'exécution vous a permis de mieux comprendre. Dans la prochaine leçon, nous explorerons un autre sujet JavaScript.

Vous pouvez me contacter sur GitHub et Linkedin.

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
Comprendre le moteur JavaScript: détails de l'implémentationComprendre le moteur JavaScript: détails de l'implémentationApr 17, 2025 am 12:05 AM

Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisationPython vs JavaScript: la courbe d'apprentissage et la facilité d'utilisationApr 16, 2025 am 12:12 AM

Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

Python vs JavaScript: communauté, bibliothèques et ressourcesPython vs JavaScript: communauté, bibliothèques et ressourcesApr 15, 2025 am 12:16 AM

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

De C / C à JavaScript: comment tout cela fonctionneDe C / C à JavaScript: comment tout cela fonctionneApr 14, 2025 am 12:05 AM

Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

Moteurs JavaScript: comparaison des implémentationsMoteurs JavaScript: comparaison des implémentationsApr 13, 2025 am 12:05 AM

Différents moteurs JavaScript ont des effets différents lors de l'analyse et de l'exécution du code JavaScript, car les principes d'implémentation et les stratégies d'optimisation de chaque moteur diffèrent. 1. Analyse lexicale: convertir le code source en unité lexicale. 2. Analyse de la grammaire: générer un arbre de syntaxe abstrait. 3. Optimisation et compilation: générer du code machine via le compilateur JIT. 4. Exécuter: Exécutez le code machine. Le moteur V8 optimise grâce à une compilation instantanée et à une classe cachée, SpiderMonkey utilise un système d'inférence de type, résultant en différentes performances de performances sur le même code.

Au-delà du navigateur: Javascript dans le monde réelAu-delà du navigateur: Javascript dans le monde réelApr 12, 2025 am 12:06 AM

Les applications de JavaScript dans le monde réel incluent la programmation côté serveur, le développement des applications mobiles et le contrôle de l'Internet des objets: 1. La programmation côté serveur est réalisée via Node.js, adaptée au traitement de demande élevé simultané. 2. Le développement d'applications mobiles est effectué par le reactnatif et prend en charge le déploiement multiplateforme. 3. Utilisé pour le contrôle des périphériques IoT via la bibliothèque Johnny-Five, adapté à l'interaction matérielle.

Construire une application SaaS multi-locataire avec next.js (intégration backend)Construire une application SaaS multi-locataire avec next.js (intégration backend)Apr 11, 2025 am 08:23 AM

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Comment construire une application SaaS multi-locataire avec Next.js (Frontend Integration)Apr 11, 2025 am 08:22 AM

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles