Un article précédent a mentionné diverses façons d'appeler des fonctions anonymes. Cet article jette un œil aux différentes façons d'appeler les fonctions nommées.
1. ()
La fonction la plus couramment utilisée consiste à appeler / exécuter une fonction:
La copie de code est la suivante:
// Aucune fonction de paramètre Fun1
fonction fun1 () {
alert ('je suis appelé');
}
fun1 ();
// Fonction de paramètre FUN2
fonction fun2 (param) {
alert (param);
}
fun2 («Je suis appelé»);
Après ECMascript3, appelez et appliquez la fonction, il existe deux types de fonctions.
2. Appel
La copie de code est la suivante:
// Aucune fonction de paramètre Fun1
fonction fun1 () {
alert ('je suis appelé');
}
fun1.Call (null);
// Fonction de paramètre FUN2
fonction fun2 (param) {
alert (param);
}
fun2.Call (null, 'je suis appelé')
3. Appliquer
La copie de code est la suivante:
// Aucune fonction de paramètre Fun1
fonction fun1 () {
alert ('je suis appelé');
}
fun1.apply (null);
// Fonction de paramètre FUN2
fonction fun2 (param) {
alert (param);
}
fun2.Apply (null, [«Je suis appelé»])
Bien que l'appel, l'application peut être utilisé uniquement pour appeler / exécuter des fonctions, ils sont davantage utilisés pour modifier le contexte de l'exécution des fonctions.
4. Nouveau (cette méthode n'est pas recommandée)
La copie de code est la suivante:
// Aucune fonction de paramètre Fun1
fonction fun1 () {
alert ('je suis appelé');
}
New Fun1 ();
// Fonction de paramètre FUN2
fonction fun2 (param) {
alert (param);
}
Nouveau fun2 («Je suis appelé»)
L'essence de New est de créer / construire une instance d'une classe. Les Fun1 et Fun2 définis ici ne sont évidemment pas une classe (non, pas, pas de prototype). Mais les deux fonctions se sont exécutées. Ceci est un effet secondaire de nouveau.
D'après la méthode d'appel ci-dessus, il n'y a pas de différence dans les résultats d'exécution des quatre méthodes. Mais si la fonction a une valeur de retour, elle peut vous décevoir lorsque vous l'appelez de la nouvelle manière.
La copie de code est la suivante:
// fonctionne amusant avec la valeur de retour
fonction fun () {
alert ('je suis appelé');
retourner "Jack";
}
var c = new fun ();
alerte (c); // [objet objet], pourquoi pas "jack"?
Changez-le en ceci
La copie de code est la suivante:
// fonctionne amusant avec la valeur de retour
fonction fun () {
alert ('je suis appelé');
return {name: 'jack'};
}
var c = new fun ();
alerte (c.Name); // Jack, il est revenu normalement
Pour résumer: lors de l'appel d'une fonction de nouveauté. S'il y a une valeur de retour, la valeur ne sera pas renvoyée lorsque la valeur de retour est un type intégré (type de base) de JavaScript tel que String (String), Number (Number), Boolean, etc.; Lorsque la valeur de retour est un type d'objet, l'objet, la fonction et le tableau seront directement renvoyés.
Lorsque la valeur de retour est un type intégré (type de base), que revient exactement le nouveau fun ()? Le prochain article discutera des détails des nouveaux appels de méthode.