Cet article présente principalement des fonctions ordinaires, des fonctions anonymes et des fonctions de fermeture
1. Introduction aux fonctions ordinaires
1.1 Exemple
La copie de code est la suivante:
fonction wamedame (name) {
alerte (nom);
}
1.2 Écraser des fonctions avec le même nom en js
Dans JS, les fonctions ne sont pas surchargées. Ils définissent les fonctions avec le même nom de fonction et différentes signatures de paramètres. Les fonctions suivantes remplaceront les fonctions précédentes. Lorsqu'on appelle, seules les fonctions suivantes seront appelées.
La copie de code est la suivante:
var n1 = 1;
fonction add (value1) {
retour n1 + 1;
}
alerte (add (n1)); // La fonction suivante est appelée, la sortie est: 3
fonction add (valeur1, valeur2) {
valeur de retour 1 + 2;
}
alerte (add (n1)); // sortie: 3
1.3 Objet des arguments
Les arguments sont similaires aux paramètres C #, paramètres variables de fonctionnement: le nombre de paramètres passés en fonction est supérieur au nombre de paramètres au moment de la définition.
La copie de code est la suivante:
Fonction affichées (name) {
alerte (nom); // Zhang San
pour (var i = 0; i <arguments.length; i ++) {
alerte (arguments [i]); // Zhang San, Li Si, Wang Wu
}
}
Names de montage («Zhang San», «Li Si», «Wang Wu»);
1.4 La valeur de plage par défaut de la fonction
Si la fonction ne spécifie pas la valeur de retour, le retour par défaut est `` non défini ''
La copie de code est la suivante:
fonction showmsg () {
}
alert (showmsg ()); //
2. Fonctions anonymes
2.1 fonctions anonymes variables
2.1.1 Description
Les fonctions peuvent être affectées aux variables et aux événements.
2.1.2 Exemple
La copie de code est la suivante:
// Fonction anonyme variable, le côté gauche peut être des variables, des événements, etc.
var anonymousNormal = fonction (p1, p2) {
alerte (p1 + p2);
}
AnonymousNormal (3,6); // Sortie 9
2.1.3 Scénarios applicables
① Évitez la pollution du nom de la fonction. Si vous déclarez d'abord une fonction avec un nom, puis l'attribuez à une variable ou à un événement, cela entraînera une abus du nom de la fonction.
2.2 Fonction anonyme sans nom
2.2.1 Description
Autrement dit, lorsque la fonction est déclarée, les paramètres sont suivis. Lorsque la syntaxe JS analyse cette fonction, le code à l'intérieur est exécuté immédiatement.
2.2.2 Exemple
La copie de code est la suivante:
(fonction (p1) {
alerte (P1);
}) (1);
2.2.3 Scénarios applicables
① Exécuter une seule fois. Si le navigateur se charge, il n'a besoin que d'exécuter des fonctions qui ne sont pas exécutées ultérieurement.
3. Fonction de fermeture
3.1 Description
Supposons que la fonction A déclare une fonction B en interne, la fonction B fait référence à une variable autre que la fonction B, et la valeur de retour de la fonction A est une référence à la fonction B. Alors la fonction B est une fonction de fermeture.
3.2 Exemple
3.2.1 Exemple 1: Références globales et références locales
La copie de code est la suivante:
fonction funa () {
var i = 0;
fonction funb () {// Fonction de fermeture funb
i ++;
alerte (i)
}
retourner funb;
}
var allshowa = funa (); // Référence de variable globale: sortie cumulative 1, 2, 3, 4, etc.
fonction parthowa () {
var showa = funa (); // Référence de variable locale: Seule unique 1
showa ();
}
AllShowa est une variable globale qui fait référence à la fonction FORA. Répétez AllShowa () et sortira des valeurs accumulées telles que 1, 2, 3, 4.
Exécutez la fonction parthowa (), car seule la SHORA de la variable locale est déclarée en interne pour référencer FORA. Après l'exécution, les ressources occupées par Showa sont publiées en raison de la relation de portée.
La clé de la fermeture est la portée: les ressources occupées par les variables globales ne seront publiées qu'après la modification de la page ou que le navigateur est fermé. Lorsque var allshowa = funa (), il équivaut à AllShowa se référant à funb (), de sorte que les ressources en funb () ne sont pas recyclées par GC, donc les ressources en Funa () ne le seront pas.
3.2.2 Exemple 2: Fonction de fermeture paramètre
La copie de code est la suivante:
fonction funa (arg1, arg2) {
var i = 0;
fonction funb (étape) {
i = i + étape;
alerte (i)
}
retourner funb;
}
var allshowa = funa (2, 3); // L'appel est funa arg1 = 2, arg2 = 3
allShowa (1); // L'appel est funb étape = 1, sortie 1
allShowa (3); // L'appel est funb setp = 3, sortie 4
3.2.3 Exemple 3: Partage variable dans la fonction parent funa
La copie de code est la suivante:
fonction funa () {
var i = 0;
fonction funb () {
i ++;
alerte (i)
}
allshowc = function () {// allshowc fait référence aux fonctions anonymes et partage la variable I avec funb
i ++;
alerte (i)
}
retourner funb;
}
var allshowa = funa ();
var allshowb = funa (); // allshowb fait référence à funa, allShowc re-re-in en interne et partage la variable i avec allshowb
3.3 Scénarios applicables
① Assurez-vous la sécurité des variables à l'intérieur de la fonction FONA, car l'extérieur ne peut pas accéder directement aux variables FORA.
Avez-vous une idée de la fonction de fonction de JavaScript? Si vous avez des questions, laissez-moi un message.