Apropos oben in ECMAScript: Das Interessanteste ist meiner Meinung nach die Funktion. Der Grund, warum es interessant ist, ist, dass die Funktion tatsächlich ein Objekt ist. Jede Funktion ist eine Instanz des Funktionstyps und verfügt über dieselben Eigenschaften und Methoden wie andere Referenztypen. Da Funktionen Objekte sind, ist der Funktionsname tatsächlich ein Zeiger auf das Funktionsobjekt und wird nicht an eine Funktion gebunden. Funktionen werden normalerweise mithilfe der Funktionsdeklarationssyntax definiert, wie im folgenden Beispiel:
Dies ist fast dasselbe wie die unten beschriebene Methode zum Definieren einer Funktion mithilfe eines Funktionsausdrucks.
Der obige Code ermittelt die Variablensumme und initialisiert sie als Funktion. Sie werden feststellen, dass nach dem Funktionsschlüsselwort kein Funktionsname steht. Dies liegt daran, dass beim Definieren einer Funktion mithilfe eines Funktionsausdrucks der Funktionsname nicht verwendet werden muss (die Funktion kann über die Variablensumme referenziert werden). Beachten Sie außerdem, dass am Ende der Funktion ein Semikolon steht, genau wie bei der Deklaration anderer Variablen.
Die letzte Möglichkeit, eine Funktion zu definieren, ist die Verwendung des Funktionskonstruktors. Der Funktionskonstruktor kann eine beliebige Anzahl von Parametern akzeptieren, der letzte Parameter wird jedoch immer als Funktionskörper betrachtet und die vorherigen Parameter nummerieren die Parameter der neuen Funktion. Beispiel unten:
Aus technischer Sicht handelt es sich hierbei um einen Funktionsausdruck. Wir empfehlen jedoch nicht, diese Methode zum Definieren von Funktionen zu verwenden, da diese Syntax dazu führt, dass der Code zweimal analysiert wird (erstens, um den regulären ECMAScript-Code zu analysieren, und zweitens, um die an den Konstruktor übergebene Zeichenfolge zu analysieren), was sich auf die Leistung auswirkt. Diese Syntax ist jedoch sehr intuitiv für das Verständnis des Konzepts „Funktionen sind Objekte und Funktionsnamen sind Zeiger“.
Da Funktionsnamen lediglich Zeiger auf Funktionen sind, unterscheiden sich Funktionsnamen nicht von anderen Variablen, die Objektzeiger enthalten. Mit anderen Worten: Eine Funktion kann mehrere Namen haben, wie im folgenden Beispiel:
Der obige Code definiert zunächst eine Funktion namens sum(), die verwendet wird, um die Summe zweier Werte zu ermitteln. Dann wird die Variable anotherSum deklariert und auf die Gleichheit sum() gesetzt (wodurch der Wert von sum zu anotherSum zugewiesen wird). Beachten Sie, dass die Verwendung eines Funktionsnamens ohne Klammern auf den Funktionszeiger zugreift und nicht die Funktion aufruft. Zu diesem Zeitpunkt verweisen anotherSum und sum auf dieselbe Funktion, sodass auch anotherSum() aufgerufen werden kann und das Ergebnis zurückgibt. Auch wenn sum auf null gesetzt ist und somit von der Funktion „getrennt“ wird, erweist es sich immer noch als normal, anotherSum() aufzurufen.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für alle hilfreich sein, die Javascript lernen.