Une fonction est un bloc de code réutilisable piloté par un événement ou exécuté lorsqu'il est appelé.
JScript prend en charge deux fonctions: l'une est une fonction à l'intérieur du langage (comme EVAL ()), et l'autre est créée par elle-même.
Une variable déclarée dans une fonction JavaScript (utilisant VAR) est une variable locale, il ne peut donc être accessible que dans la fonction. (La portée de cette variable est locale).
Vous pouvez utiliser des variables locales avec le même nom dans différentes fonctions, car seules les fonctions qui ont déclaré la variable peuvent être reconnues.
Comment appeler une fonction
1. Appel normal: FunctionName (paramètre réel ...)
2. Appelez les variables pointant vers la fonction:
var myvar = nom de fonction;
myvar (paramètres réels ...);
Renvoie la fonction
1. Lorsque la fonction n'a pas de valeur de retour explicite, la valeur retournée est "non définie".
2. Lorsque la fonction a une valeur de retour, elle renvoie quelle que soit la valeur de retour.
Nous pouvons retourner la fonction à l'endroit où il est appelé en utilisant l'instruction RETOUR.
Lorsque vous utilisez l'instruction RETOUR, la fonction arrête l'exécution et renvoie la valeur spécifiée.
Une fonction renvoie généralement une valeur unique, donc cette valeur peut également être une autre fonction:
La copie de code est la suivante:
<script type = "text / javascript">
var box = function () {
var a = 1;
return function () {
alerte (a ++)
}
}
alert (box ()); // "function () {alert (a ++)}" apparaît
</cript>
Ici, nous attribuons simplement la valeur de retour à une variable, puis nous pouvons l'appeler comme en utilisant une fonction normale:
La copie de code est la suivante:
<script type = "text / javascript">
var box = function () {
var a = 1;
return function () {
alerte (++ a)
}
}
var newfunc = box ();
newFunc (); // 2
</cript>
Si vous souhaitez que la fonction renvoyée soit exécutée immédiatement, vous pouvez également utiliser Box () () pour exécuter ce code.
Toutes les fonctions ECMAScript sont transmises par des valeurs, ce qui signifie que les paramètres ne seront pas transmis par référence.
PS: S'il y a une référence passe-by-, alors la variable de la fonction sera une variable globale et peut également être accessible en externe.
(1) Types de valeur: numérique, booléen, nul, indéfini.
(2) Type de référence: objet, tableau, fonction.
Valeur de type de référence: fait référence aux objets stockés dans la mémoire du tas, ce qui signifie que la variable n'est en fait qu'un pointeur, qui exécute un autre emplacement en mémoire, et l'objet est enregistré par cet emplacement;
Créer des fonctions anonymes
La copie de code est la suivante:
fonction(){
retourner 'Lee'; // Les fonctions anonymes uniques ne peuvent pas être exécutées, et même si elles peuvent être exécutées, elles ne peuvent pas être appelées car il n'y a pas de nom
}
Il existe de nombreux usages de cette fonction anonyme dans jQuery. Déclarez directement une fonction anonyme et utilisez-la immédiatement. L'avantage de l'utilisation de fonctions anonymes est qu'ils peuvent éviter de définir une fonction qui n'est pas utilisée une fois, et elle est exempte du problème des conflits de dénomination. Il n'y a pas de concept d'espace de noms dans JS, il est donc facile d'avoir des conflits de nom de fonction. Une fois le conflit de dénomination établi, le dernier a été déclaré prévaudra.
Exécutez des fonctions anonymes par auto-exécution:
La copie de code est la suivante:
// Exécuter des fonctions anonymes via l'auto-exécution
<script type = "text / javascript">
(function () {// (fonction anonyme) (); mettez la fonction anonyme dans les premières parenthèses et exécutez dans les deuxième parenthèses.
alert ('Lee');
}) ();
</cript>
Attribuez la valeur de retour de la fonction anonyme à la variable:
La copie de code est la suivante:
// attribue la valeur de retour de la fonction anonyme auto-exécutée à la variable
<script type = "text / javascript">
var box = (function () {
alert ('Lee');
}) (); // popt "Lee";
alerte (boîte); // Undefined apparaît. Si Alert (Box ()) est écrit, alors seul un "lee" apparaît
</cript>
Paramètres de passage pour les fonctions anonymes de l'auto-exécution:
La copie de code est la suivante:
// auto-exécute le transfert de paramètres des fonctions anonymes
<script type = "text / javascript">
(fonction (âge) {
alerte (âge);
}) (100); // popt 100
</cript>
JavaScript crée des fonctions dynamiques:
JavaScript prend en charge la création de fonctions dynamiques. Les fonctions dynamiques doivent être définies par les objets de fonction (la fonction est un objet en javascript, qui est fixe et inchangé. Il stipule que le "F" de l'objet de fonction doit être capitalisé. Lorsqu'il s'agit d'une fonction, nous savons qu'il est un mot-clé utilisé lors de la définition de la fonction: la fonction Funname (x, y), quand elle est fonction (lorsque F est capitalisé), nous savons que c'est un objet Javascript))
Le format de base pour créer des fonctions dynamiques: var name de variable = nouvelle fonction ("Paramètre 1", "Paramètre 2", "Paramètre n", "Instruction EXECUTION");
Regardez le code suivant:
La copie de code est la suivante:
<script type = "text / javascript">
var carré = nouvelle fonction ("x", "y", "var sum; sum = x + y; return sum;");
Le résultat de l'alerte ("carré (2,3) est:" + carré (2,3)); // Le résultat du carré (2,3) est: 5
</cript>
Square est une fonction créée dynamiquement. Chaque partie du contenu entre parenthèses après l'objet de fonction doit être sous la forme d'une chaîne, c'est-à-dire qu'elle doit être enfermée en citations ("" ou '')
Ce code:
var carré = nouvelle fonction ("x", "y", "var sum; sum = x + y; return sum;");
Et le code suivant:
La copie de code est la suivante:
Fonction Square (x, y) {
var sum;
sum = x + y;
somme de retour;
}
C'est exactement la même chose, sauf que l'une est une fonction dynamique et l'autre est une fonction statique.
Pourquoi divisons-nous le code en petits morceaux de code? , l'avantage de diviser une chaîne en plusieurs chaînes indépendantes est que nous pouvons modifier la fonction de la fonction à tout moment en modifiant certaines chaînes.
Fonction de rappel
Un rappel est le processus d'appel d'une fonction. Commencez ensuite par comprendre ce processus d'appel. La fonction a a un paramètre, qui est une fonction b. Lorsque la fonction A est exécutée, la fonction B est exécutée. Ensuite, ce processus est appelé rappel.
En fait, le chinois est également facile à comprendre: rappels, rappels, ce qui signifie des appels de retour. Après avoir terminé la fonction A, appelez la fonction B plus tard.
Il doit être clair ici: la fonction B est transmise à la fonction A sous la forme d'un paramètre, donc la fonction B est appelée fonction de rappel.
La plupart des fonctions d'effet dans jQuery impliquent des fonctions de rappel. Fonction d'effet jQuery
Par exemple:
La copie de code est la suivante:
<script type = "text / javascript">
$ ("div"). show (1000, function () {
// Fonction de rappel
});
</cript>
Ici, la fonction de rappel peut être remplacée par une instance:
La copie de code est la suivante:
<script type = "text / javascript">
$ ("div"). show (1000, function () {
console.log ("Hello World")
});
</cript>
Le rappel est en fait, lorsqu'une fonction est exécutée, la fonction qui est maintenant exécutée est la fonction de rappel dite. Et ça? C'est facile à comprendre ...
La différence entre les méthodes et les fonctions
La copie de code est la suivante:
var arr = [1,2,3,4,5]
var a = 12; // Variable: GRATUIT
arr.a = 5; // Attribut: appartient à un objet
fonction show () // fonction: gratuit
{
alert ('a');
}
arr.fn = fonction () // méthode: appartient à un objet
{
alert ('b');
}
En fait, une méthode est une fonction, mais une méthode a un objet auquel il appartient.
Comme nous le savons, les fonctions de liaison pour cliquer sur les événements
grammaire:
$ (sélecteur) .click (fonction)
Description du paramètre
La fonction est facultative. Spécifie la fonction qui s'exécute lorsque l'événement de clic se produit.
Cette forme est souvent observée dans jQuery. Il utilise la fonction comme paramètre pour ajouter un gestionnaire d'événements à la méthode.
Fonction mondiale JS
Les fonctions globales ne sont pas un concept avec des propriétés ou des méthodes d'objets intégrés. La fonction globale n'appartient à aucun objet intégré.
JavaScript contient les 7 fonctions globales suivantes pour remplir certaines fonctions couramment utilisées:
Escape (), eval (), isfinite (), isnan (), parsefloat (),
ParseInt (), Unescape ().
Plusieurs fonctions de fonctions
Utiliser comme constructeur de classe
La copie de code est la suivante:
Function class () {}
class.prototype = {};
var item = new class ();
Utilisé comme fermeture
La copie de code est la suivante:
(fonction(){
// Portée indépendante
}) ();
Appelé constructeur
Le soi-disant constructeur doit générer un nouvel objet via cette fonction.
La copie de code est la suivante:
<script type = "text / javascript">
fonction test () {
this.x = 10;
}
var obj = nouveau test ();
alerte (obj.x); // pop 10;
</cript>
Le nouvel opérateur peut être utilisé pour combiner des constructeurs prédéfinis tels que Object (), Date () et Function () pour créer et initialiser des objets. La programmation orientée objet est une caractéristique puissante de sa capacité à définir des constructeurs personnalisés pour créer des objets personnalisés utilisés dans les scripts. Un constructeur personnalisé est créé afin que les objets avec des propriétés définis puissent être créées. Vous trouverez ci-dessous un exemple de fonction personnalisée (notez l'utilisation de ce mot-clé).
La copie de code est la suivante:
Cercle de fonction (xpoint, ypoint, rayon) {
this.x = xpoint; // coordonnée x du centre du cercle.
this.y = ypoint; // La coordonnée y du centre du cercle.
this.r = rayon; // Le rayon du cercle.
}
Lorsque vous appelez le constructeur du cercle, la valeur du point central et le rayon du cercle sont données (tous ces éléments sont nécessaires pour définir complètement un objet circulaire unique). À la fin, l'objet Circle contient trois propriétés. Voici comment illustrer un objet Circle.
var acircle = nouveau cercle (5, 11, 99);
L'avantage de l'utilisation d'une fonction de constructeur est qu'il peut recevoir certains paramètres lors de la création d'un objet.
La copie de code est la suivante:
<script type = "text / javascript">
Fonction Test (name) {
this.ococupation = "coder";
this.name = name;
this.whoareyou = function () {
return "je suis" + this.name + "et je suis un" + this.ococupation;
}
}
var obj = nouveau test ('Trigkit4'); // créer différents objets en utilisant le même constructeur
var obj2 = nouveau test ('étudiant');
obj.whoareyou (); // "Je suis Trigger4 et je suis un coin"
obj2.whoareyou (); // "Je suis étudiant et je suis un coin"
</cript>
Par convention, nous devons capitaliser la première lettre de la fonction du constructeur pour la distinguer considérablement de la fonction générale.
Les deux formes suivantes de fonctions de définition sont équivalentes.
La copie de code est la suivante:
<script type = "text / javascript">
var test = fonction () {
alerte ("Hello World");
}
alerte (typeof (test)); // fonction de sortie
</cript>
Voici un test de variable, dont la valeur initiale est attribuée à une entité de fonction
La copie de code est la suivante:
<script type = "text / javascript">
fonction test () {
alerte ("Hello World");
}
alerte (typeof (test)); // fonction de sortie
</cript>
Jetez un œil à la forme de fonction de définition suivante:
La copie de code est la suivante:
<script type = "text / javascript">
fonction test () {
alerte ("Hello World");
};
test (); // il sort en fait bonjour, n'est-ce pas?
fonction test () {
alert ("bonjour");
};
test (); // seulement, bonjour est sortie
</cript>
De toute évidence, la première fonction n'a pas fonctionné, n'est-ce pas? Nous savons que le moteur d'analyse JavaScript n'exécute pas de code par ligne, mais exécute le code pièce par pièce. Dans l'analyse et l'exécution du même programme, les instructions de fonction de la formule de définition seront exécutées en premier, de sorte que la première logique de code définie a été écrasée par la seconde, de sorte que la même fonction ne sera exécutée que deux fois.
Fonctionner comme valeur
Les fonctions ne sont pas seulement une syntaxe, mais aussi une valeur en js. C'est-à-dire que la fonction peut être affectée à une variable, stockée dans l'attribut d'un objet ou un élément d'un tableau, et transmise dans une autre fonction en tant que paramètre.
Le nom d'une fonction est en fait invisible, c'est juste le nom d'une variable, qui fait référence à l'objet de fonction
La copie de code est la suivante:
<script type = "text / javascript">
Fonction Square (x, y) {
retour x * y;
}
var s = carré; // S et Square se réfèrent à la même fonction
carré (2,3); // 6
s (2,4); // 8
</cript>
En plus d'attribuer des fonctions aux variables, les fonctions peuvent également être affectées aux propriétés des objets. Lorsque les fonctions sont appelées attributs d'objets, les fonctions sont appelées méthodes.
La copie de code est la suivante:
<script type = "text / javascript">
var obj = {carré: fonction (x, y) {//
retour x * y;
}};
var ect = obj.square (2,3);
</cript>
attribut prototype
Chaque fonction contient un attribut prototype, qui pointe vers une référence à un objet, appelé un objet prototype.
Voir: JavaScript Apprening Notes (v) Prototype et chaîne prototype
Fonctions avancées
La fonction d'ordre supérieur ici n'est pas la fonction d'ordre supérieur dans le nombre élevé. La fonction dite d'ordre supérieur est une fonction qui exploite la fonction. Il reçoit une ou plusieurs fonctions comme paramètres et renvoie une nouvelle fonction.