js dans la compréhension de la portée et de la chaîne de portée

La portée et la chaîne de portée

portée

  • Champ d'application est l'environnement d'exécution environnement d'exécution de code, l'environnement d'exécution global est la portée globale, la fonction est la portée privée, ils sont la mémoire pile
  • environnement d'exécution définit les variables de données ou d'autres fonctions ont accès à déterminer leur propre comportement. Chaque environnement d'exécution objet variable a une, associée, toutes les variables et les fonctions définies dans l'environnement sont stockés dans cet objet. Bien que notre code ne peut pas accéder à l'objet, mais l'analyseur utilisera dans l'arrière-plan lors du traitement des données
  • environnement d'exécution global est le plus périphérique d'un environnement d'exécution. En fonction de la mise en œuvre ECMAScript où l'environnement d'accueil, l'environnement d'exécution de l'objet ne représente pas la même
  • Dans un navigateur Web, l'environnement d'exécution global est considéré comme l'objet de la fenêtre, de sorte que toutes les variables et les fonctions globales sont créées comme les propriétés et méthodes de l'objet window
  • Dans l'environnement NODE, l'environnement d'exécution global est un objectif global
  • Un environnement d'exécution après tout le code est terminé, l'environnement est détruit, sauf lorsque toutes les définitions de variables et fonctions seront détruites également (lorsque l'environnement d'exécution global jusqu'à ce que la sortie de l'application, telles que la fermeture de la page du navigateur ou sur le Web, sera destruction)
  • Chaque fonction a son propre environnement d'exécution. Lorsque le courant pénètre dans l'exécution d'une fonction, la fonction sera poussée dans l'environnement ambiant d'une pile. Et après les exécute la fonction, la pile est l'environnement a sauté, de rendre le contrôle à l'environnement d'exécution avant. ECMAScript flux d'exécution du programme avec précision commandé par un mécanisme pratique pour ce
  1. Champ d'application est ouvert pile d'exécution de code de la mémoire
  2. ---- champ privé> exécute la fonction forme un champ privé
  3. portée mondiale ----> pour ouvrir une page formera une portée mondiale
  4. variables privées ----> formé dans les variables privées à l'intérieur du champ (déclaration var par; paramètre)
  5. Les variables globales ----> variable dans le champ global formé (var a = 12 ou non déclarée dans une fonction, affectation directe variable)

La chaîne de portée

Lorsque le code est exécuté dans un environnement, il crée un objet variable de chaîne de portée (portée formation de la chaîne)

  • La face avant de la chaîne de portée, l'environnement de code objet variable où le courant est toujours exécuté
  • Objet suivant dans la chaîne de portée de l'environnement extérieur et les objets suivants variables de l'environnement extérieur à l'autre, jusqu'à ce que l'environnement d'exécution global
  • exécution globale objet variable d'environnement est toujours le dernier objet sur la chaîne de portée

L'environnement interne peut accéder à l'ensemble de l'environnement extérieur à travers la chaîne de portée, mais ne peut pas accéder à l'environnement extérieur, l'environnement interne de toutes les variables et fonctions

var n = 10;
function outer(){
  function inner(){
    function center(){
      console.log(n);
    }
    center();
  }
  inner();
  var n = 15;
}
outer(); //=> undefined

A l'intérieur de la fonction, vous devez accéder à une variable, la fonction elle-même d'abord visiter l'objet variable, s'il y a cette variable, sinon, il continuera à rechercher la portée le long de la chaîne jusqu'à ce que la portée mondiale. Si la variable est utilisée pour déterminer la valeur de l'objet variable dans un objet variable

En raison de localiser les variables le long de la chaîne de portée pour atteindre, donc aussi appelé chaîne de portée variable pour trouver le mécanisme de
ce mécanisme explique également les variables locales que les variables globales plus rapidement, parce que le milieu du processus de recherche plus court. Mais le moteur JavaScript fait un bon travail en optimisant l'identifiant de requête, de sorte que cette différence est négligeable

Publié 21 articles originaux · louanges gagnées 0 · Vues 279

Je suppose que tu aimes

Origine blog.csdn.net/my466879168/article/details/104849459
conseillé
Classement