Définition de la fonction JavaScript
1: Appelez la fonction de mot-clé à construire, comme:
Distance de la fonction (x1, x2, y1, y2)
{{
var dx = x2-x1;
var dy = y2-y1;
Return math.sqrt (dx * dx + dy * dy);
}
2: Utilisez la fonction de construction FUNION ()
var f = nouvelle fonction * "x", "y", "return x * y");
Cette ligne de code crée une nouvelle fonction, qui est essentiellement équivalente à la définition fonctionnelle de la définition de syntaxe que vous connaissez:
Fonction f (x, y)
{{
Retour x * y;
}
Le constructeur Functitino () peut accepter les paramètres de chaîne multiples. Le corps principal de la fonction lors de son dernier paramètre, qui peut contenir n'importe quelle instruction JavaScript, séparez le nombre entre les instructions. D'autres paramètres sont utilisés pour expliquer la chaîne du nom du paramètre de forme défini par la fonction. Si vous définissez la fonction sans paramètres, vous ne pouvez passer qu'une chaîne (c'est-à-dire le sujet de la fonction) au constructeur.
Notez qu'aucun des paramètres transmis à la fonction du constructeur () n'est utilisé pour expliquer le nom de la fonction pour créer. La fonction USEN -Nnamed créée par Function () Constructeur est parfois devenue une "fonction anonyme".
Vous voudrez peut-être savoir quelle est la fonction du constructeur fonction (). Pourquoi non seulement utiliser l'instruction Fonction pour définir toutes les fonctions? La raison en est que le constructeur fonction () nous permet de construire et de compiler dynamiquement une fonction, qui ne nous limitera pas au corps de fonction pré-composé par l'instruction de fonction. L'effet d'impact négatif apporté par cela est que chaque fois qu'une fonction est appelée, le constructeur de fonction () doit le compiler. Par conséquent, nous ne devons pas fréquemment appeler ce constructeur dans un corps de boucle ou dans les fonctions souvent utilisées.
Une autre raison en utilisant la fonction de la fonction () est qu'il peut définir la fonction comme faisant partie de l'expression de JavaScript, plutôt que de définir une instruction.
3: Fonction Quantité directe
La quantité directe de fonction est une expression qui définit la fonction anonyme. La syntaxe de la quantité directe de fonction est très similaire à l'instruction de fonction, mais elle est utilisée comme une expression, pas une instruction, et il n'a pas besoin de spécifier le nom de la fonction. Le code à trois lignes suivant utilise l'instruction Function (), le constructeur fonction () et la fonction de la fonction pour définir trois en gros les mêmes fonctions:
fonction f (x) {return x * x};
var f = nouvelle fonction ("x", "return x * x;");
var f = fonction (x) {reurn x * x};
Bien que la fonction crée directement une fonction sans nom, sa syntaxe stipule également qu'elle peut spécifier le nom de la fonction, ce qui est très utile lors de l'écriture et de l'appel de sa propre fonction récursive. Par exemple:
var f = fonction fact (x) {if (x <= 1) return 1; else return x * fact (x-1);};
Le code ci-dessus définit une fonction sans nom et est stocké en variable f pour sa référence. Il ne crée pas vraiment une fonction appelée Fact (), mais il permet à la fonction d'utiliser le nom pour se citer lui-même. Cependant, il convient de noter que la version précédente de JavaScript1.5 n'a pas correctement implémenté la fonction fonctionnelle de ce nom.
L'utilisation de la fonction de la fonction est très similaire à la méthode de création d'une fonction avec la fonction de construction de fonction (). Puisqu'ils sont tous créés par l'expression de JavaScript, non créés par des instructions, la façon de les utiliser est plus flexible, en particulier pour les fonctions qui ne sont utilisées qu'une seule fois et n'ont pas besoin d'être nommées. Par exemple, une fonction spécifiée par une fonction de mesure directe à la mesure peut être stockée dans une variable, transmise à d'autres fonctions, et même des appels directement:
a [0] = fonction (x) {return x * x;};
A.Sort (fonction (a, b) {return ab;});
var Tensquared = (fonction (x) {return x * x;});
Comme le constructeur fonction (), la fonction crée directement une fonction sans nom et ne stockera pas automatiquement cette fonction dans l'attribut. Cependant, par rapport au constructeur fonction (), la quantité directe de fonction a un avantage important. Le sujet d'une fonction créée par la fonction de fonction () de construction doit être expliquée par une chaîne, et cette façon d'exprimer une fonction longue et complexe est maladroite. Mais le corps principal de la fonction est utilisé par la syntaxe JavaScript standard. Et la quantité directe de fonction est résolue une fois, et le code JavaScript transmis à la fonction de fonction () de construction comme une chaîne au constructeur fonction () n'est analysé et compilé qu'une fois que le constructeur est appelé.
Dans JavaScript1.1, la fonction du constructeur () peut être utilisée pour définir les fonctions. Vous devez faire attention aux différences importantes entre ces deux méthodes.
Tout d'abord, la fonction constructeur () permet la création dynamique et le code JavaScript de compilation pendant l'exécution. Mais la quantité directe de fonction est une partie statique de la structure de la fonction, tout comme l'instruction de fonction.
Deuxièmement, en tant que résultat inévitable de la première différence, chaque fois que la fonction du constructeur () est utilisée pour analyser le corps de la fonction et créer un nouvel objet numérique East Han. Si l'appel du constructeur apparaît dans un cycle ou apparaît dans une fonction qui est souvent appelée, l'efficacité de cette méthode est très faible. D'un autre côté, la fonction imbriquée qui peut apparaître directement dans le cycle et les fonctions n'est pas réprimandée à chaque appel, et un nouvel objet de fonction n'est pas créé chaque fois qu'il rencontre une quantité directe de fonction.
Le troisième point entre la quantité entre le constructeur de fonction () et la fonction est que la fonction créée par la fonction du constructeur () n'utilise pas la portée de la phrase. Le code est expliqué:
var y y = "global";
Fonction ConstructionFunction () ()
{{
var y y = "local";
Renvoie une nouvelle fonction ("Retour Y");
}
// Cette ligne de code affichera "global", car la fonction renvoyée par le constructeur fonction () n'utilise pas la portée locale.
// Si vous utilisez un montant direct de fonction, cette ligne de code peut afficher "local".
alerte (constructure ());