JavaScript- Funktionsdefinitionen
JavaScript-Funktionen werden mit dem
Schlüsselwort definiert .function
Sie können eine Funktionsdeklaration oder einen Funktionsausdruck verwenden .
Funktionsdeklarationen
Weiter oben in diesem Tutorial haben Sie gelernt, dass Funktionen mit der folgenden Syntax deklariert werden:
function functionName(parameters) {
// code to be executed
}
Deklarierte Funktionen werden nicht sofort ausgeführt. Sie werden "zur späteren Verwendung gespeichert" und später ausgeführt, wenn sie aufgerufen (aufgerufen) werden.
Beispiel
function myFunction(a, b) {
return a * b;
}
Semikolons werden verwendet, um ausführbare JavaScript-Anweisungen zu trennen.
Da eine Funktionsdeklaration keine ausführbare Anweisung ist, ist es nicht üblich, sie mit einem Semikolon zu beenden .
Funktionsausdrücke
Eine JavaScript-Funktion kann auch mit einem Ausdruck definiert werden .
Ein Funktionsausdruck kann in einer Variablen gespeichert werden:
Beispiel
const x = function (a, b) {return a * b};
Nachdem ein Funktionsausdruck in einer Variablen gespeichert wurde, kann die Variable als Funktion verwendet werden:
Beispiel
const x = function (a, b) {return a * b};
let z = x(4, 3);
Die obige Funktion ist eigentlich eine anonyme Funktion (eine Funktion ohne Namen).
In Variablen gespeicherte Funktionen benötigen keine Funktionsnamen. Sie werden immer unter Verwendung des Variablennamens aufgerufen (aufgerufen).
Die obige Funktion endet mit einem Semikolon, da sie Teil einer ausführbaren Anweisung ist.
Der Function()-Konstruktor
Wie Sie in den vorherigen Beispielen gesehen haben, werden JavaScript-Funktionen mit dem function
Schlüsselwort definiert.
Funktionen können auch mit einem integrierten JavaScript-Funktionskonstruktor namens definiert werden
Function()
.
Beispiel
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
Sie müssen den Funktionskonstruktor eigentlich nicht verwenden. Das obige Beispiel ist dasselbe wie das Schreiben:
Beispiel
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
In den meisten Fällen können Sie die Verwendung des new
Schlüsselworts in JavaScript vermeiden.
Funktion Heben
Weiter oben in diesem Tutorial haben Sie etwas über „Heben“ ( JavaScript Hoisting ) gelernt.
Hoisting ist das Standardverhalten von JavaScript, das Deklarationen an den Anfang des aktuellen Gültigkeitsbereichs verschiebt.
Das Heben gilt für Variablendeklarationen und für Funktionsdeklarationen.
Aus diesem Grund können JavaScript-Funktionen aufgerufen werden, bevor sie deklariert werden:
myFunction(5);
function myFunction(y) {
return y * y;
}
Mit einem Ausdruck definierte Funktionen werden nicht gehisst.
Selbstaufrufende Funktionen
Funktionsausdrücke können "selbstaufrufend" gemacht werden.
Ein selbstaufrufender Ausdruck wird automatisch aufgerufen (gestartet), ohne aufgerufen zu werden.
Funktionsausdrücke werden automatisch ausgeführt, wenn auf den Ausdruck () folgt.
Sie können eine Funktionsdeklaration nicht selbst aufrufen.
Sie müssen die Funktion in Klammern setzen, um anzuzeigen, dass es sich um einen Funktionsausdruck handelt:
Beispiel
(function () {
let x = "Hello!!"; // I will invoke myself
})();
Die obige Funktion ist eigentlich eine anonyme selbstaufrufende Funktion (Funktion ohne Namen).
Funktionen können als Werte verwendet werden
Als Werte können JavaScript-Funktionen verwendet werden:
Beispiel
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3);
JavaScript-Funktionen können in Ausdrücken verwendet werden:
Beispiel
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3) * 2;
Funktionen sind Objekte
Der typeof
Operator in JavaScript gibt "Funktion" für Funktionen zurück.
Aber JavaScript-Funktionen lassen sich am besten als Objekte beschreiben.
JavaScript-Funktionen haben sowohl Eigenschaften als auch Methoden .
Die arguments.length
Eigenschaft gibt die Anzahl der Argumente zurück, die beim Aufruf der Funktion empfangen wurden:
Beispiel
function myFunction(a, b) {
return arguments.length;
}
Die toString()
Methode gibt die Funktion als String zurück:
Beispiel
function myFunction(a, b) {
return a * b;
}
let text = myFunction.toString();
Eine als Eigenschaft eines Objekts definierte Funktion wird als Methode des Objekts bezeichnet.
Eine Funktion zum Erstellen neuer Objekte wird als Objektkonstruktor bezeichnet.
Pfeilfunktionen
Pfeilfunktionen ermöglichen eine kurze Syntax zum Schreiben von Funktionsausdrücken.
Sie brauchen das function
Schlüsselwort, das return
Schlüsselwort und die
geschweiften Klammern nicht .
Beispiel
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Pfeilfunktionen haben keine eigenen this
. Sie eignen sich nicht gut zum Definieren von Objektmethoden .
Pfeilfunktionen werden nicht gehisst. Sie müssen vor ihrer Verwendung definiert werden.
Die Verwendung const
ist sicherer als die Verwendung von var
, da ein Funktionsausdruck immer ein konstanter Wert ist.
Sie können das Schlüsselwort und die geschweiften Klammern nur weglassen, return
wenn die Funktion eine einzelne Anweisung ist. Aus diesem Grund könnte es eine gute Angewohnheit sein, sie immer beizubehalten:
Beispiel
const x = (x, y) => { return x * y };
Pfeilfunktionen werden in IE11 oder früher nicht unterstützt.