La portée est l'un des concepts les plus importants de JavaScript. Si vous voulez bien apprendre JavaScript, vous devez comprendre les principes de travail de la portée et de la chaîne de portée JavaScript. L'article d'aujourd'hui présente une explication détaillée des exemples de portée JavaScript, dans l'espoir d'aider tout le monde à mieux apprendre JavaScript.
Tout langage de programmation a le concept de portée. Autrement dit, la portée est la portée accessible des variables et des fonctions, c'est-à-dire que la portée contrôle le cycle de visibilité et de vie des variables et des fonctions. En JavaScript, la portée des variables est globale et locale.
1. Aucune portée au niveau du bloc en javascript
Il y a une portée au niveau du bloc dans Java ou C #, c'est-à-dire que les accolades sont également une portée.
public static void main () {if (1 == 1) {String name = "sept";} system.out.println (name);} // signaler une erreur publique static void main () {if (1 == 1) {String name = "sept";} console.writeline (name);} // signale une erreur une erreurPas de portée au niveau du bloc en javascript
fonction main () {if (1 == 1) {var name = 'sept';} console.log (name);} //2. JavaScript adopte la portée de la fonction
En JavaScript, chaque fonction agit comme une portée et les variables dans la portée interne ne sont pas accessibles en externe.
fonction main () {var innervalue = 'sept';} main (); console.log (innerValue); // erreur: non-rotule.3. Chaîne de portée JavaScript
Étant donné que chaque fonction dans JavaScript est une portée, si une fonction imbriquée de fonction apparaît, une chaîne de portée apparaîtra.
xo = 'alex'; fonction func () {var xo = "sept"; fonction inner () {var xo = 'alvin'; console.log (xo);} inner ();} func ();Par exemple, le code ci-dessus apparaît dans la chaîne de portée composé de trois portées. Si la chaîne de portée apparaît, l'ordre apparaîtra lors de la recherche de variables. Pour l'exemple ci-dessus:
Lorsque Console.log (XO) est exécuté, son ordre de recherche est de rechercher de l'intérieur vers l'extérieur en fonction de la priorité de la chaîne de portée. Si la couche intérieure n'existe pas, elle consultera progressivement jusqu'à ce qu'aucune exception ne soit trouvée.
4. La chaîne de portée de JavaScript a été créée avant l'exécution
La portée de JavaScript a été créée avant son exécution. Lorsqu'il est exécuté à l'avenir, il vous suffit de rechercher en fonction de la chaîne de portée.
Exemple 1:
xo = 'alex'; fonction func () {var xo = "sept"; fonction inner () {console.log (xo);} return inner;} var ret = func (); ret (); // résultats de sortie: septLe code ci-dessus existe déjà avant que la fonction ne soit appelée:
• Portée globale-> Func Fonction Scope-> Portée de la fonction intérieure
Lors de l'exécution de [ret ();], puisqu'il fait référence à la fonction intérieure, la chaîne de portée de cette fonction a été définie comme: Scope globale -> Func Fonction Scope -> Étendue de la fonction interne, donc lors de l'exécution [ret ();], les variables seront trouvées sur la base de la chaîne de portée existante.
Exemple 2:
xo = 'alex'; fonction func () {var xo = "eirc"; function inner () {console.log (xo);} xo = 'sept'; return inner;} var ret = func (); ret (); // résultat de sortie: septLe code ci-dessus a le même but que l'exemple 1, et il souligne également que la chaîne de portée existe déjà avant que la fonction ne soit appelée:
• Portée globale-> Func Fonction Scope-> Portée de la fonction intérieure
Différemment, lors de l'exécution de [var ret = func ();], la valeur de la variable XO dans la portée FUNC a été réinitialisée à "Sept" de "Eric", donc lors de l'exécution [ret ();] plus tard, vous ne pouvez trouver "sept".
Exemple 3:
xo = 'alex'; <br> fonction de fonction () {console.log (xo);} fonction func () {var xo = "sept"; Bar de retour;} var ret = func (); ret (); // résultat de sortie: AlexDans le code ci-dessus, deux chaînes de portée ont été créées avant l'exécution de la fonction:
• Portée globale-> Bar Fonction Scope
• Portée mondiale-> Stendra de la fonction FUNC
Lors de l'exécution de [ret ();], RET fait référence à la fonction de barre, et la chaîne de portée de la fonction de barre existe déjà: portée globale -> Portée de la fonction de la barre, donc lors de l'exécution, il sera recherché en fonction de la chaîne de portée existante.
5. Déclaration à l'avance
Si vous ne créez pas de variables et que vous les utilisez directement dans JavaScript, une erreur sera signalée:
Console.log (xxoo); // Erreur: UNCAVER REFERTERROR: xxoo n'est pas défini
Dans JavaScript, si une valeur est créée sans attribuer une valeur, la valeur n'est pas définie, telle que:
var xxoo; console.log (xxoo); //
Si cela est écrit dans la fonction:
fonction foo () {console.log (xo); var xo = 'sept';} foo (); //Le code ci-dessus ne signale pas une erreur mais sort non défini. La raison en est qu'avant que les fonctions JavaScript ne soient exécutées, elles en déclareront toutes les variables sans attribuer des valeurs. Par conséquent, il équivaut à l'exemple ci-dessus que la fonction a déjà exécuté var xo lorsqu'il est "précompilé"; Ainsi, la sortie du code ci-dessus n'est pas définie.
Ce qui précède est une explication détaillée de l'échantillon de portée JavaScript introduit par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!