In einem früheren Artikel wurde verschiedene Möglichkeiten erwähnt, anonyme Funktionen zu bezeichnen. Dieser Artikel sieht sich die verschiedenen Möglichkeiten an, benannte Funktionen zu nennen.
1.. ()
Die am häufigsten verwendete Funktion besteht darin, eine Funktion aufzurufen/auszuführen:
Die Codekopie lautet wie folgt:
// keine Parameterfunktion Fun1
Funktion fun1 () {
ALERT ('Ich bin angerufen');
}
fun1 ();
// Parameterfunktion Fun2
Funktion fun2 (param) {
alarm (param);
}
Fun2 ('Ich bin angerufen');
Nach ECMAScript3, aufrufen und anwenden, gibt es zwei Arten von Funktionen.
2. Rufen Sie an
Die Codekopie lautet wie folgt:
// keine Parameterfunktion Fun1
Funktion fun1 () {
ALERT ('Ich bin angerufen');
}
fun1.call (null);
// Parameterfunktion Fun2
Funktion fun2 (param) {
alarm (param);
}
Fun2.call (null, 'Ich bin angerufen')
3.. Bewerben Sie sich
Die Codekopie lautet wie folgt:
// keine Parameterfunktion Fun1
Funktion fun1 () {
ALERT ('Ich bin angerufen');
}
Fun1.Apply (null);
// Parameterfunktion Fun2
Funktion fun2 (param) {
alarm (param);
}
Fun2.Apply (NULL, ['Ich bin angerufen'])
Obwohl Call, Apply Apply verwendet werden kann, um Funktionen aufzurufen/auszuführen, werden sie eher verwendet, um den Kontext der Funktionsausführung zu ändern.
4. Neu (diese Methode wird nicht empfohlen)
Die Codekopie lautet wie folgt:
// keine Parameterfunktion Fun1
Funktion fun1 () {
ALERT ('Ich bin angerufen');
}
New Fun1 ();
// Parameterfunktion Fun2
Funktion fun2 (param) {
alarm (param);
}
New Fun2 ('Ich bin angerufen')
Das Wesen von neu ist es, eine Instanz einer Klasse zu erstellen/zu konstruieren. Die hier definierten Fun1 und Fun2 sind offensichtlich keine Klasse (nein, das, kein Prototyp). Aber beide Funktionen wurden ausgeführt. Dies ist ein Nebeneffekt von neu.
Nach der obigen Anrufmethode gibt es keinen Unterschied in den Ausführungsergebnissen der vier Methoden. Wenn die Funktion jedoch einen Rückgabewert hat, kann sie Sie enttäuschen, wenn Sie sie auf neue Weise anrufen.
Die Codekopie lautet wie folgt:
// Funktionsspaß mit Rückgabewert
Funktion Fun () {
ALERT ('Ich bin angerufen');
zurück "Jack";
}
var c = neuer Spaß ();
ALERT (c); // [Objektobjekt], warum nicht "Jack"?
Ändern Sie es dazu
Die Codekopie lautet wie folgt:
// Funktionsspaß mit Rückgabewert
Funktion Fun () {
ALERT ('Ich bin angerufen');
return {name: 'Jack'};
}
var c = neuer Spaß ();
Alarm (C.Name); // Jack, es kehrte normal zurück
Zusammenfassend: Wenn Sie eine Funktion auf neue Weise aufrufen. Wenn ein Rückgabewert vorliegt, wird der Wert nicht zurückgegeben, wenn der Rückgabewert ein integrierter Typ (Basistyp) von JavaScript wie String (String), Nummer (Nummer), Boolean usw. ist; Wenn der Rückgabewert ein Objekttyp ist, werden Objekt, Funktion und Array direkt zurückgegeben.
Wenn der Rückgabewert ein integrierter Typ (Basistyp) ist, was genau kehrt New Fun () zurück? Im nächsten Artikel werden die Details der neuen Methodenaufrufe erörtert.