Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Der Komma-Operator (,) wertet jeden seiner Operanden (von links nach rechts) aus und gibt den Wert des letzten Operanden zurück. Dies wird häufig verwendet, um mehrere Aktualisierungen für den Nachgedanken einer for-Schleife bereitzustellen.
Eine oder mehrere Ausdrücke, von denen der letzte als Wert des zusammengesetzten Ausdrucks zurückgegeben wird.
Sie können den Komma-Operator verwenden, wenn Sie mehrere Ausdrücke an einer Stelle einfügen möchten, die einen einzelnen Ausdruck erfordert. Die häufigste Verwendung dieses Operators ist die Bereitstellung mehrerer Aktualisierungen in einer for-Schleife. Für ein Idiom, das mehrere Anweisungen an einer Stelle erlaubt, die einen einzelnen Ausdruck erfordert, können Sie ein IIFE verwenden.
Da alle Ausdrücke außer dem letzten ausgewertet und dann verworfen werden, müssen diese Ausdrücke Nebeneffekte haben, um nützlich zu sein. Häufige Ausdrücke mit Nebeneffekten sind Zuweisungen, Funktionsaufrufe und die ++- und ---Operatoren. Andere können ebenfalls Nebeneffekte haben, wenn sie Getter aufrufen oder Typumwandlungen auslösen.
Der Komma-Operator hat die niedrigste Priorität aller Operatoren. Wenn Sie einen durch Komma verbundenen Ausdruck in einen größeren Ausdruck integrieren möchten, müssen Sie ihn in Klammern setzen.
Der Komma-Operator ist völlig anders als Kommata, die als syntaktische Trennzeichen an anderen Stellen verwendet werden, einschließlich:
Tatsächlich akzeptieren einige dieser Stellen fast alle Ausdrücke, aber keine durch Komma verbundenen Ausdrücke, da dies mit den syntaktischen Kommatrennzeichen mehrdeutig wäre. In diesem Fall müssen Sie den durch Komma verbundenen Ausdruck in Klammern setzen. Zum Beispiel ist die folgende eine const-Deklaration, die zwei Variablen deklariert, wobei das Komma nicht der Komma-Operator ist:
Dies unterscheidet sich vom folgenden, bei dem b = 2 ein Zuordnungs-Ausdruck und keine Deklaration ist. Der Wert von a ist 2, der Rückgabewert der Zuweisung, während der Wert von 1 verworfen wird:
Komma-Operatoren können nicht als nachgestellte Kommas erscheinen.
Wenn a ein zweidimensionales Array mit 10 Elementen auf jeder Seite ist, verwendet der folgende Code den Komma-Operator, um i zu inkrementieren und j zu dekrementieren, und druckt so die Werte der diagonalen Elemente im Array:
Da Kommas die niedrigste Priorität haben — sogar niedriger als Zuweisungen — können Kommas verwendet werden, um mehrere Zuweisungsausdrücke zu verbinden. Im folgenden Beispiel wird a auf den Wert von b = 3 gesetzt (der 3 ist). Dann wird der Ausdruck c = 4 ausgewertet und sein Ergebnis wird zum Rückgabewert des gesamten Komma-Ausdrucks.
Ein weiteres Beispiel, das man mit dem Komma-Operator machen könnte, ist das Verarbeiten vor dem Zurückgeben. Wie erwähnt, wird nur das letzte Element zurückgegeben, aber alle anderen werden ebenfalls ausgewertet. Man könnte also Folgendes tun:
Dies ist besonders nützlich für einzeilige Pfeilfunktionen. Das folgende Beispiel verwendet ein einzelnes map(), um sowohl die Summe eines Arrays als auch die Quadrate seiner Elemente zu erhalten, was ansonsten zwei Iterationen erfordern würde, eine mit reduce() und eine mit map():
Der Komma-Operator gibt immer den letzten Ausdruck als Wert statt als Referenz zurück. Dies führt dazu, dass einige kontextuelle Informationen wie die this-Bindung verloren gehen. Zum Beispiel gibt ein Property-Zugriff eine Referenz auf die Funktion zurück, die sich auch das Objekt merkt, auf dem es aufgerufen wird, sodass der Aufruf der Eigenschaft ordnungsgemäß funktioniert. Wenn die Methode aus einem Komma-Ausdruck zurückgegeben wird, wird die Funktion so aufgerufen, als wäre sie ein neuer Funktionswert, und this ist undefined.
Mit dieser Technik können Sie in ein indirektes eval eintreten, da ein direktes eval erfordert, dass der Funktionsaufruf auf die Referenz zur eval()-Funktion erfolgt.
| ECMAScript® 2027 Language Specification # sec-comma-operator |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.