Maison >interface Web >js tutoriel >Introduction à la chaîne de portée et à l'environnement d'exécution en JavaScript (image et texte)
Cet article vous présente une introduction à la chaîne de portée et à l'environnement d'exécution en JavaScript (images et texte). Il a une certaine valeur de référence. Les amis dans le besoin pourront s'y référer. .
Chaque fonction possède une propriété interne [[Scope]], qui contient une collection d'objets dans la portée dans laquelle la fonction a été créée. Cette collection est la chaîne de portée de la fonction. Par exemple, la fonction globale suivante :
fucntion add(num1, num2){ var sum = num1 + num2; return sum; }
Lorsque la fonction add est créée, une variable objet est insérée dans sa chaîne de portée, qui contient toutes les variables définies dans la portée globale.
La portée de la fonction add sera utilisée lorsque la fonction est exécutée. Chaque fois que la fonction est exécutée, un objet interne de l'environnement d'exécution sera créé. Chaque environnement d'exécution possède sa propre chaîne de portée. Lorsque la fonction s'exécute, un nouvel objet appelé objet actif est créé pour l'environnement d'exécution, qui contient toutes les variables locales de la fonction, les paramètres nommés, les collections de paramètres, etc. Supposons que var total = add(5,10) est exécuté et que la chaîne de portée correspondante est la suivante :
Lors de l'exécution de la fonction, la recherche de variables commence à partir de la portée head Rechercher, et s'il est trouvé, utiliser la valeur du mutateur. S'il n'est pas trouvé, poursuivez la recherche à partir de l'objet suivant dans la portée jusqu'à ce que la modification soit trouvée. Si aucune correspondance n'est trouvée, elle n'est pas définie. Lorsque des variables globales sont fréquemment utilisées, vous pouvez d'abord utiliser une variable locale pour les enregistrer, puis accéder directement aux variables locales pour réduire le nombre de recherches et améliorer l'efficacité. Par exemple :
function initUI(){ var doc = document, bd = doc.body, links = doc.getElementsByTagName("a"); .... }
Lorsque l'exécution de la fonction est terminée, l'objet actif sera également détruit. Mais une fois fermé, l'objet actif ne sera pas détruit. C'est aussi pourquoi les fermetures occupent beaucoup de mémoire.
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!