La soi-disant fermeture doit se référer à: une fonction interne qui lit des variables autres que la fonction actuelle, c'est-à-dire l'environnement de contexte dans lequel il a été créé.
La copie de code est la suivante:
fonction bonjour () {
var char = "Hello, world";
fonction print () {
console.log (char);
};
return print ();
}
Il convient de noter que la fonction d'impression se réfère ici à la variable char de la fonction HELLO externe, donc nous pouvons retourner un retour
La copie de code est la suivante:
Bonjour le monde
Dans un sens, cette fonction doit être attribuée à la portée. Bien sûr, nous n'avons aucun moyen d'accéder directement à Char, sauf s'il y a une erreur lorsque nous déclarons cette variable. comme
La copie de code est la suivante:
fonction bonjour () {
char = "Bonjour, monde";
fonction print () {
console.log (char);
};
return print ();
}
Juste parce qu'il manque un VAR.
La copie de code est la suivante:
Ici, bonjour devient une fermeture. Une fermeture est un objet spécial. Il se compose de deux parties: une fonction et l'environnement dans lequel la fonction est créée. L'environnement se compose de toute variable locale dans la portée lorsque la fermeture est créée.
Fermetures javascript et ceci
Il convient de noter qu'il peut y avoir des problèmes lors de la lecture de ceci et des arguments.
La copie de code est la suivante:
fonction bonjour () {
this.char = "bonjour, monde";
fonction de fonction () {
char = "Je ne suis pas bonjour mon monde";
console.log (this.char);
};
return output ();
}
Bien sûr, cet exemple n'est pas assez approprié. Nous avons donc besoin d'un exemple supplémentaire pour expliquer ce problème. Ce qui suit est un exemple de "JavaScript Advanced Programming" pour illustrer ce problème.
La copie de code est la suivante:
var name = "la fenêtre";
var objet = {
Nom: "Mon objet",
getNameFunc: function () {
return function () {
Renvoie ce.name;
}
}
};
object.getNameFunc () () ()
Mais cette utilisation est vraiment, et la solution consiste à enregistrer une variable temporaire qui, comme mentionné dans l'article précédent "quelques connaissances à ce sujet en JavaScript".
La copie de code est la suivante:
var name = "la fenêtre";
var objet = {
Nom: "Mon objet",
getNameFunc: function () {
var that = this;
return function () {
Renvoyez ce.name;
}
}
};
object.getNameFunc () () ()
Fermetures JavaScript et variables de lecture et d'écriture
Il convient de noter que si nous ne traitons pas bien nos variables, nous pouvons également les modifier.
La copie de code est la suivante:
fonction bonjour () {
var char = "Hello, world";
retourner{
set: function (string) {
return char = string;
},
print: function () {
console.log (char)
}
}
}
var sait = bonjour ();
Say.set («nouveau bonjour, monde»)
Say.print () // New Hello World
Fermetures et performances JavaScript
Citation MDC
La copie de code est la suivante:
Si les fermetures ne sont pas requises pour certaines tâches spéciales, il est imprudent de créer des fonctions dans d'autres fonctions sans besoin, car les fermetures ont des effets négatifs sur les performances du script, y compris la vitesse de traitement et la consommation de mémoire.
L'article a également mentionné.
La copie de code est la suivante:
Par exemple, lors de la création d'un nouvel objet ou d'une nouvelle classe, les méthodes doivent généralement être associées au prototype de l'objet plutôt que défini dans le constructeur de l'objet. La raison en est que cela entraînera la réaffectation de la méthode une fois que le constructeur est appelé (c'est-à-dire pour la création de chaque objet).