Explication détaillée de la portée et de la chaîne de portée JS : Recommander un article //m.sbmmt.com/js-tutorial-8031.html
C'est une phrase difficile à comprendre . Voici un aperçu : lorsque le code est exécuté dans un environnement, une chaîne de portée d'objets variables est créée. Le but de la chaîne de portée est d'assurer un accès ordonné à toutes les variables et fonctions auxquelles l'environnement d'exécution a accès.
Portée : La portée d'une variable est celle définie dans la zone des variables du code source du programme. . (Notez que la portée d'une variable est déterminée lorsque la variable est définie, pas lorsqu'une méthode est exécutée)
es5 a deux portées, la portée de la fonction et la portée globale
Chaque morceau de code JavaScript (code ou fonction global) est associé à une chaîne de portées.
Cette chaîne de portée est une liste ou liste chaînée d'objets. Ce groupe d'objets définit les variables "dans la portée" dans ce code.
Lorsque js a besoin de trouver la valeur de la variable x (ce processus est appelé résolution de variable), il commencera à partir du premier objet de la chaîne si cet objet a un objet nommé x attribut, la valeur de cet attribut. L'attribut sera utilisé directement. S'il n'y a pas d'attribut nommé x dans le premier objet, js continuera à rechercher l'objet suivant dans la chaîne. Si le deuxième objet n’a toujours pas d’attribut nommé x, il continuera à chercher le suivant, et ainsi de suite. Si aucun objet dans la chaîne de portée ne contient l'attribut x, alors on considère que x n'existe pas dans la chaîne de portée de ce code, et finalement une exception ReferenceError est levée.
Résumé : La fonction de la chaîne de portée est que pour les variables, vous pouvez trouver la valeur en fonction de cette chaîne. Vous ne pouvez rechercher que vers le haut. Si vous trouvez la première, vous ne rechercherez plus cette portée. et la chaîne de portée sont toutes les deux. Elle est déterminée lorsque la variable est définie, quel que soit l'ordre d'exécution.
Quelques questions :
Le résultat de l'exécution de ce code est 3, car lorsque la fonction c est définie, elle constitue une portée, et sa précédente La portée est globale, pas la fonction auto-exécutable (
La portée et la chaîne de portée sont déterminées lorsque la variable est définie et n'ont rien à voir avec l'ordre d'exécution.
)
La raison pour laquelle i peut être imprimé en dehors de l'instruction for dans cette question est que l'instruction js ne constitue pas une portée et que sa portée appartient toujours au monde global Changer var en. allons Pour signaler une erreur, essayez
Cette question est relativement complète, je dois la comprendre attentivement plusieurs fois avant de la comprendre. Je n’ai pas encore écrit d’explication. . pense. . .
Cette question nécessite une bonne compréhension de la chaîne des prototypes. Le résultat en cours d'exécution est
Articles connexes :
Chaîne de portée js, chaîne de prototypes et héritage de prototypes
Explication détaillée du prototype js et de la chaîne de prototypes
Vidéos associées :
Tutoriel vidéo sur la conception de framework avancé JavaScript
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!