Maison interface Web js tutoriel Analyse détaillée et réponses aux principes de fonctionnement de JavaScript

Analyse détaillée et réponses aux principes de fonctionnement de JavaScript

May 18, 2018 pm 04:59 PM
javascript js 分析

Cet article vous donne une analyse théorique détaillée des principes de fonctionnement de JavaScript et du partage de points de connaissances. Si cela vous intéresse, veuillez l'apprendre.

JavaScript est un langage de script dynamique faiblement typé basé sur les objets (ci-après dénommé JS). Il s'agit d'un langage interprété. Il est différent des autres langages de programmation, tels que Java/C++ et d'autres langages compilés. Ces langages Avant que le code ne soit exécuté, l'intégralité du code sera compilé et d'abord compilé en bytecode (code machine). Puis exécutez. JS ne fait pas cela. JS n'a pas besoin d'être compilé en code intermédiaire, mais peut être exécuté directement dans le navigateur. Le processus d'exécution de JS peut être divisé en deux étapes, la compilation et l'exécution. (Merci de vous référer au livre JS You Don't Know), lorsque le contrôleur JS bascule sur un morceau de code exécutable (ce code exécutable est généré lors de la phase de compilation), le Contexte d'Exécution correspondant (EC pour court). Le contexte d'exécution peut être compris comme l'environnement d'exécution (le contexte d'exécution ne peut être créé que par l'interpréteur JS et ne peut être utilisé que par l'interpréteur JS. Les utilisateurs ne peuvent pas utiliser « l'objet »).

L'environnement d'exécution en JS est divisé en trois catégories :

  • Environnement global : Lorsque le moteur JS entre dans un bloc de code, tel que Rencontrer la balise <script>xxx</script> signifie entrer dans un environnement d'exécution global

  • Environnement de fonction : lorsqu'une fonction est appelée, une exécution de fonction est formée à l'intérieur de l'environnement de fonction.

  • eval() : Exécutez la chaîne en tant que code JS seul. Il n'est pas recommandé d'utiliser

Plusieurs erreurs peuvent se produire dans un morceau. du code JS.Un contexte d'exécution.En JS, une structure de données telle qu'une pile est utilisée pour gérer le contexte d'exécution.Les caractéristiques de la pile sont "premier entré, dernier sorti, dernier entré, premier sorti". s'appelle une pile d'appels de fonction.

Caractéristiques du contexte d'exécution

  • Le bas de la pile est toujours le contexte d'exécution global, et il n'y en a qu'un seul

  • Le contexte d'exécution global n'apparaîtra dans la pile que lorsque le navigateur est fermé

  • Il n'y a pas de limite au nombre d'autres contextes d'exécution

  • Le haut de la pile est toujours le contexte d'exécution actif actuel, le reste est dans un état d'attente, une fois l'exécution terminée, la pile est immédiatement sautée, puis le contrôle est rendu au contexte d'exécution suivant

  • La fonction n'est appelée qu'à chaque fois, un contexte d'exécution sera créé pour elle, qui n'existe pas lorsque la fonction est déclarée.

Le contexte d'exécution peut être clairement compris comme un objet JS ordinaire. Le cycle de vie d'un contexte d'exécution se compose grossièrement de deux phases :

Phase de création

Cette phase complète principalement trois événements, 1. Créer un objet variable 2. Établir la chaîne de portée 3. Déterminer ce point


Phase d'exécution


Cette phase se termine principalement affectation de variables, appel de fonction et autres opérations

Le processus de création d'objets variables (VO)

  • Créer et initialiser l'objet arguments en fonction des paramètres de la fonction, et donner des arguments L'objet ajoute des attributs tels que "0", "1", "2" et "3", dont la valeur initiale n'est pas définie, et la valeur arguments.length est définie sur le nombre réel de paramètres transmis.

  • 2. Recherchez la déclaration de fonction et ajoutez des attributs à l'objet variable. Le nom de l'attribut est le nom de la fonction et la valeur de l'attribut est la valeur de référence de la fonction. une avec le même nom, écrasez-la directement

  • 3. Recherchez la déclaration de variable var (lors de la recherche d'une variable, les paramètres de la fonction seront équivalents à la déclaration var, donc la le même attribut que le nom du paramètre sera également ajouté au VO, et la valeur initiale sera également ajoutée non définie), ajoutez un attribut à l'objet variable. Le nom de l'attribut est le nom de la variable et la valeur de l'attribut est indéfinie. déjà un identifiant du même nom, il ne sera pas traité

S'il existe un identifiant (fonction, variable) du même nom ), la fonction peut écraser la variable, et le la fonction a une priorité plus élevée que la variable

L'objet variable (OV) et l'objet d'activation (AO) sont la même chose, deux noms à des moments différents. On l'appelle l'objet variable pendant la période de création, et on l'appelle l'objet d'activation pendant la période d'exécution

Prenons le code suivant comme exemple

var g_name="tom";
var g_age=20;
function g_fn(num){
 var l_name="kity";
 var l_age=18;
 function l_fn(){
  console.log(g_name + &#39;===&#39; + l_name + &#39;===&#39; + num);
 }
}
g_fn(10);
Copier après la connexion

Phase de compilation

Lorsque le contrôleur JS passe à ce morceau de code, un contexte d'exécution sera créé G_EC


La structure du contexte d'exécution est grossièrement. comme suit :

G_EC = {
 VO   : {},
 Scope_chain : [],
 this  : {}
}

/* VO的结构大概 */
VO = {
 g_name : undefined,
 g_age : undefined,
 g_fn : <函数在内存中引用值>
}

/* Scope_chain的大概结构如下 */
Scope_chain = [ G_EC.VO ] // 数组中第一个元素是当前执行上下文的VO,第二个是父执行上下文的VO,最后一个是全局执行上下文的VO,在执行阶段,会沿着这个作用域链一个一个的查找标识符,如果查到则返回,否知一直查找到全局执行上下文的VO

/* this */
this = undefined // 此时this的值是undefined
Copier après la connexion

Une fois le contexte d'exécution créé, il est immédiatement poussé dans la pile d'appels de fonction. À ce moment, l'interpréteur le fera tranquillement. une chose, qui est d'ajouter un attribut interne [[portée à la fonction dans le VO actuel]], cet attribut pointe vers la chaîne de portée ci-dessus.

g_fn.scope = [ global_EC.VO ] // 该scope属性只能被JS解释器所使用,用户无法使用
Copier après la connexion

Phase d'exécution

Exécuter le code ligne par ligne Lorsqu'une expression est rencontrée, elle ira à la chaîne de portée actuelle. . Recherchez l'objet VO dans l'objet et revenez s'il est trouvé. S'il n'est pas trouvé, continuez à rechercher l'objet VO suivant jusqu'à ce que l'objet VO global soit terminé.


À ce stade, il peut y avoir une affectation de variable, un appel de fonction et d'autres opérations. Lorsque l'interpréteur rencontre g_fn(), il sait qu'il s'agit d'un appel de fonction, puis crée immédiatement un contexte d'exécution de fonction. pour cela, fn_EC , le contexte fn_EC comporte également deux phases


, qui sont la phase de création et la phase d'exécution.


Dans la phase de création, pour le contexte d'exécution de la fonction, lors de la création de l'objet variable, un objet arguments supplémentaire sera créé, puis des attributs seront ajoutés à l'objet arguments : "0", "1", "2" dont la valeur initiale n'est pas définie,

  • Rechercher la déclaration de fonction de fonction

  • Rechercher la déclaration de variable var

Ce qui précède est ce que j'ai compilé pour tout le monde, j'espère que cela sera utile à tout le monde à l'avenir.

Articles associés :

p5.jsImplémentation de l'animation en spirale d'or

Délégation d'événements en JS Explication détaillée de l'utilisation des méthodes calculées et dans Vue.js

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 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

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)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Dec 18, 2023 pm 03:39 PM

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Analyse des raisons pour lesquelles le répertoire secondaire du CMS DreamWeaver ne peut pas être ouvert Analyse des raisons pour lesquelles le répertoire secondaire du CMS DreamWeaver ne peut pas être ouvert Mar 13, 2024 pm 06:24 PM

Titre : Analyse des raisons et des solutions pour lesquelles le répertoire secondaire de DreamWeaver CMS ne peut pas être ouvert. Dreamweaver CMS (DedeCMS) est un puissant système de gestion de contenu open source largement utilisé dans la construction de divers sites Web. Cependant, parfois pendant le processus de création d'un site Web, vous pouvez rencontrer une situation dans laquelle le répertoire secondaire ne peut pas être ouvert, ce qui perturbe le fonctionnement normal du site Web. Dans cet article, nous analyserons les raisons possibles pour lesquelles le répertoire secondaire ne peut pas être ouvert et fournirons des exemples de code spécifiques pour résoudre ce problème. 1. Analyse des causes possibles : Problème de configuration des règles pseudo-statiques : pendant l'utilisation

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Analyser si le langage de programmation principal de Tencent est Go Analyser si le langage de programmation principal de Tencent est Go Mar 27, 2024 pm 04:21 PM

Titre : Le principal langage de programmation de Tencent Go : Une analyse approfondie En tant que principale entreprise technologique chinoise, Tencent a toujours attiré beaucoup d’attention dans son choix de langages de programmation. Ces dernières années, certains pensent que Tencent adopte principalement Go comme principal langage de programmation. Cet article procédera à une analyse approfondie pour déterminer si le principal langage de programmation de Tencent est Go et donnera des exemples de code spécifiques pour étayer ce point de vue. 1. Application du langage Go dans Tencent Go est un langage de programmation open source développé par Google. Son efficacité, sa concurrence et sa simplicité sont appréciées par de nombreux développeurs.

Analyser les avantages et les inconvénients de la technologie de positionnement statique Analyser les avantages et les inconvénients de la technologie de positionnement statique Jan 18, 2024 am 11:16 AM

Analyse des avantages et des limites de la technologie de positionnement statique Avec le développement de la science et de la technologie modernes, la technologie de positionnement est devenue un élément indispensable de nos vies. La technologie de positionnement statique en fait partie. Elle présente des avantages et des limites uniques. Cet article procédera à une analyse approfondie de la technologie de positionnement statique pour mieux comprendre son état d'application actuel et ses tendances de développement futures. Examinons d’abord les avantages de la technologie de positionnement statique. La technologie de positionnement statique permet de déterminer les informations de position en observant, mesurant et calculant l'objet à positionner. Par rapport à d'autres technologies de positionnement,

See all articles