Cet article vous présentera ce que sont les fonctions anonymes en Javascript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Analyse :
1. La fonction dite anonyme, comprise littéralement, est une fonction sans nom que JS utilise () à la place (Notez qu'il s'agit des parenthèses )
2. Formulaire de définition :
function (){
//to add codes that you want to add
}
Copier après la connexion
3. Fonction de la fonction anonyme
(1) Par rapport à la fonction de fermeture, le plus grand effet n'est pas pour polluer la situation globale Une fois l'objet exécuté, le GC récupère automatiquement la mémoire. C'est la différence essentielle avec la fonction de fermeture. Une caractéristique majeure de la fonction de fermeture est la suivante :
les variables résident en mémoire et ne sont libérées que lorsque le navigateur est fermé.
function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
nAdd();
result(); // 1000
Copier après la connexion
Dans le code ci-dessus, le résultat est en fait la fonction de fermeture f2. Il a été exécuté deux fois, la première fois, la valeur était de 999, la deuxième fois, la valeur était de 1 000. Cela prouve que la variable locale n dans la fonction f1 est toujours stockée en mémoire et n'est pas automatiquement effacée après l'appel de f1.
Pourquoi cela se produit-il ? La raison en est que f1 est la fonction parent de f2 et que f2 est affecté à une variable globale, ce qui fait que f2 est toujours en mémoire, et l'existence de f2 dépend de f1, donc f1 est toujours en mémoire et ne sera pas supprimé. une fois l'appel terminé, recyclé par le mécanisme de récupération de place (garbage collection).
Une autre chose à noter dans ce code est la ligne "nAdd=function(){n+=1}". Tout d'abord, le mot-clé var n'est pas utilisé avant nAdd, donc nAdd est plutôt une variable globale. que les variables locales. Deuxièmement, la valeur de nAdd est une fonction anonyme, et cette
fonction anonyme elle-même est également une fermeture, donc nAdd est équivalent à un setter, qui peut opérer sur des variables locales à l'intérieur de la fonction en dehors de la fonction.
(2) Par rapport aux fonctions générales, la précompilation n'est pas effectuée.
function fuc() {
fuc1(); //foo被提到了作用域的最前面, 于是这里可以正常调用foo函数
fuc2(); //这里会报错bar是个undefined
function fuc1() {alert("foo()") }
var fuc2 = function () { alert("bar")};
}
Copier après la connexion
Code :
Plusieurs expressions de fonctions anonymes :
Mode 1 : Fonction Littérale
Déclarez d'abord la fonction objet puis exécutez.
(function(){
// insert code here
})();
Copier après la connexion
Mode 2 : Expression prioritaire
Puisque JavaScript exécute les expressions dans l'ordre de l'intérieur vers l'extérieur, les parenthèses sont utilisées pour forcer l'exécution des fonctions déclarées.
(function(){
// insert code here
}());
Copier après la connexion
Mode 3 : Opérateur Void (Opérateur Void)
Utilisez l'opérateur Void pour exécuter un seul opérande.
void function(){
// insert code here
}();
Copier après la connexion
Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun. Pour plus de didacticiels connexes, veuillez visiter le
Tutoriel vidéo JavaScript !
Recommandations associées :
Tutoriel graphique JavaScript
Manuel en ligne 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!