Maison >interface Web >js tutoriel >Exemple d'explication de la portée et de la fermeture de la fonction dans js
Cet article partage principalement avec vous des exemples de portée et de fermeture de fonction dans js. 1. La portée est très simple, il suffit d'un simple clic. La portée de js n'a pas de portée au niveau du bloc, seulement une portée globale et une portée de fonction ; 🎜>
Par exemple :if(true){ var a=100; } console.log(a);En java ou c, les accolades sont en dehors du bloc et ne peuvent pas être obtenues, mais en js c'est possible, ce qui équivaut à
var a; if(true){ a=100; }Le a ici est la portée globale ; toutes les variables définies en dehors de la fonction sont la portée globale. Cas particulier :
function Loga(){ a=100 } console.log(a);Le a ici peut également être obtenu Lorsque la variable est déclarée directement sans var à l'intérieur de la fonction, la portée parent est également considérée comme la portée, mais pas. Il est recommandé d'écrire ainsi, en général vous devez déclarer la définition. La compréhension littérale de la portée de la fonction est que les variables définies à l'intérieur de la fonction fonctionnent à l'intérieur de la fonction. La différence entre la portée de la fonction et la portée globale est que la portée globale peut être appelée dans la portée de la fonction ; variables dans la portée et les modifier, mais la portée globale ne peut pas appeler les variables définies dans la portée de la fonction. La définition ici est très importante (qu'elle soit modifiée). Cela implique la chaîne de portée, ce qui signifie que les variables peuvent accéder aux variables du parent. portée à son tour. En termes simples, il est accessible de l’intérieur vers l’extérieur mais ne peut pas être consulté de l’extérieur vers l’intérieur. 2. FermetureIl n'y a pas de définition exacte du concept de fermetureUne fonction comme valeur de retour ;
b. Les fonctions sont passées en paramètres
Exemple :
function F1(){ var a=100 return function(){ console.log(a);//a是自由变量 } } var a=200; var f=F1(); f();
Il s'agit d'un cas de fermeture typique, la valeur de retour f est une fonction, exécutez Le L'environnement est global, mais l'environnement généré est dans F1. La portée de la fonction ici est F1, donc la sortie est 100 ; a voici une variable libre, qui doit être recherchée dans la portée parent, qui est F1.
Deuxièmement Dans le cas, la fonction est passée en paramètre
Évidemment le résultat est le même La raison est la même que ci-dessus L'environnement d'exécution est F2, mais l'environnement de génération. est F1 et la portée parent est F1, donc la sortie est toujours 100.function F1(){ var a=100 return function(){ console.log(a); } } var a=200; var f=F1(); function F2(fn){ var a=300; fn(); } F2(f);
Recommandations associées :
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!