«Environnement d'exécution», quand vous entendez ce terme, vous risquez d'être confus ! Et cela est aussi appelé « contexte d’exécution » dans de nombreuses littératures, mais c’est en fait la même chose. Les livres et les documents l'expliquent souvent de manière très compliquée. C'est une partie difficile à comprendre en JS. Ne vous inquiétez pas, cet article tente d'expliquer ce concept dans un langage simple et facile.
Regardons d'abord un exemple :
Nous entrons dans la console du navigateur :
var a=1;console.log(window.a);console.log(a);
Le résultat est sortie 1, la variable a est évidemment une propriété de l'objet window.
Alors laissez-moi vous demander : quel est l'environnement d'exécution de la variable a ?
Je crois qu'il n'est pas difficile pour vous de répondre : c'est l'objet fenêtre ! En effet, vous avez raison. L'objet window est l'environnement d'exécution de la variable a. On l'appelle l'environnement d'exécution global car c'est l'environnement d'exécution le plus périphérique. Ici, a est défini par défaut dans l'environnement d'exécution global, donc a et window.a sont identiques.
Regardons l'exemple suivant :
function output(){ var a=1; console.log(a); }
Dans cet exemple, a est défini à l'intérieur de la fonction, puis l'environnement d'exécution de a est l'environnement d'exécution de la fonction (sortie).
Si vous saisissez dans la fenêtre :
console.log(a);
, une erreur sera signalée, car a n'est visible que dans la sortie de la fonction.
Mais si vous saisissez :
console.log(output);
, la fonction s'affichera normalement, car l'environnement d'exécution de la sortie de la fonction est fenêtre, donc bien sûr elle peut être affichée en fenêtre !
Nous savons que la fonction de sortie est dans l'environnement fenêtre. Lorsque le programme exécute la fonction de sortie, vous auriez dû le deviner :
L'environnement de la fenêtre confie le contrôle à l'environnement de la fonction de sortie, et l'environnement de sortie devient le champ d'accueil.
Alors, que se passe-t-il réellement dans les coulisses ?
Il y a quelque chose dans JS appelé pile d'environnement d'exécution, ou pile de contexte d'exécution. Si je ne sais pas ce qu'est la pile, je dois remplir la structure des données.
Tout comme une pile de cases, l'environnement d'exécution global est placé en bas de la pile de l'environnement d'exécution. Lors de l'exécution vers la fonction de sortie, l'environnement d'exécution de cette fonction est également regroupé dans une boîte et « empilé » au-dessus de l'environnement d'exécution global. Si je souhaite continuer à exécuter d'autres fonctions dans l'environnement global, tout comme obtenir quelque chose de la case du bas, la fonction de sortie doit être exécutée en premier. Pour le dire au sens figuré, c'est comme retirer la case du haut avant de déplacer la case du bas.
Recommandations associées :
Comment comprendre les types, les paramètres et l'environnement d'exécution en JavaScript
Explication détaillée de l'environnement d'exécution et des instances de portée
Chaîne de portée javascript et environnement d'exécution
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!