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);
Copier après la connexion
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;
}
Copier après la connexion
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);
Copier après la connexion
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. Fermeture
Il n'y a pas de définition exacte du concept de fermeture
Une 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();
Copier après la connexion
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);
Copier après la connexion
Recommandations associées :
Chaîne de portée et chaîne de prototypes et héritage prototypique en js
Chaîne de portée et fermeture JS Partage d'instances de package
Explication détaillée de la portée et de la fermeture de 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!