HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
View in English Always switch to English
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 Gruppierungsoperator ( ) steuert die Reihenfolge der Auswertung in Ausdrücken. Er dient auch als Container für beliebige Ausdrücke in bestimmten syntaktischen Konstrukten, in denen es sonst zu Mehrdeutigkeiten oder Syntaxfehlern kommen könnte.
( )
console.log(1 + 2 * 3); // 1 + 6 // Expected output: 7 console.log(1 + (2 * 3)); // 1 + 6 // Expected output: 7 console.log((1 + 2) * 3); // 3 * 3 // Expected output: 9 console.log(1 * 3 + 2 * 3); // 3 + 6 // Expected output: 9
(expression)
expression
Jeder Ausdruck, der ausgewertet werden soll, einschließlich durch Kommas verbundener Ausdrücke.
Der Gruppierungsoperator besteht aus einem Paar von Klammern um einen Ausdruck, der die Inhalte gruppiert. Der Operator überschreibt die normale Operatorpriorität, sodass Operatoren mit niedriger Priorität (so niedrig wie der Komma Operator) vor einem Operator mit höherer Priorität ausgewertet werden können.
Auswerten von Addition und Subtraktion vor Multiplikation und Division.
const a = 1; const b = 2; const c = 3; // default precedence a + b * c; // 7 // evaluated by default like this a + (b * c); // 7 // now overriding precedence // addition before multiplication (a + b) * c; // 9 // which is equivalent to a * c + b * c; // 9
Beachten Sie in diesen Beispielen, dass sich die Reihenfolge der _Operatoren-_Auswertung geändert hat, nicht jedoch die Reihenfolge der _Operanden-_Auswertung. Zum Beispiel werden in diesem Code die Funktionsaufrufe a(), b() und c() von links nach rechts ausgewertet (die normale Auswertungsreihenfolge), bevor die Operatorreihenfolge berücksichtigt wird.
a()
b()
c()
a() * (b() + c());
Die Funktion a wird vor der Funktion b aufgerufen, die vor der Funktion c aufgerufen wird. Weitere Informationen zur Operatorpriorität finden Sie auf der Referenzseite.
a
b
c
Ein Ausdrucksstattement kann nicht mit dem Schlüsselwort function beginnen, da der Parser es sonst als Beginn einer Funktionsdeklaration ansehen würde. Das bedeutet, dass die folgende IIFE-Syntax ungültig ist:
function
function () { // code }();
Der Gruppierungsoperator kann verwendet werden, um diese Mehrdeutigkeit zu beseitigen, da der Parser, wenn er die linke Klammer sieht, weiß, dass das Folgende ein Ausdruck und keine Deklaration sein muss.
(function () { // code })();
Sie können auch den void Operator verwenden, um Mehrdeutigkeiten zu beseitigen.
void
In einem Pfeilfunktions- Ausdrückskörper (einer, der direkt einen Ausdruck ohne das Schlüsselwort return zurückgibt) kann der Gruppierungsoperator verwendet werden, um einen Objektliteral-Ausdruck zurückzugeben, da ansonsten die linke geschweifte Klammer als Beginn des Funktionskörpers interpretiert werden würde.
return
const f = () => ({ a: 1 });
Wenn eine Eigenschaft auf einem Zahlenliteral zugegriffen wird, könnte der Eigenschafts-Zugriffsoperator Punkt . mit einem Dezimalpunkt verwechselt werden, es sei denn, die Zahl hat bereits einen Dezimalpunkt. Sie können Ganzzahlliterale in Klammern setzen, um diese Mehrdeutigkeit zu beseitigen.
.
(1).toString(); // "1"
Der Gruppierungsoperator kann automatische Semikolon-Einfügungs- (ASI) Fallstricke abmildern. Zum Beispiel dürfen zwischen dem return Schlüsselwort und dem zurückgegebenen Ausdruck kein Zeilenumbruch stehen:
function sum(a, b) { return a + b; }
Dieser Code wird undefined zurückgeben, da direkt nach dem return Schlüsselwort ein Semikolon eingefügt wird, was dazu führt, dass die Funktion sofort zurückkehrt, ohne a + b auszuwerten. Falls der zurückgegebene Ausdruck lang ist und Sie ihn gut formatiert halten möchten, können Sie den Gruppierungsoperator verwenden, um anzuzeigen, dass dem return Schlüsselwort ein Ausdruck folgt und die Semikolon-Einfügung zu verhindern:
undefined
a + b
function sum(a, b) { return ( a + b ); }
Allerdings kann das Gruppieren auch ASI-_Gefahren _einführen. Wenn eine Zeile mit einer linken Klammer beginnt und die vorherige Zeile mit einem Ausdruck endet, wird der Parser kein Semikolon vor dem Zeilenumbruch einfügen, da es sich in der Mitte eines Funktionsaufrufs befinden könnte. Zum Beispiel:
const a = 1 (1).toString()
Dieser Code würde wie folgt interpretiert werden:
const a = 1(1).toString();
Was "TypeError: 1 is not a function" auslöst. Wenn Ihr Codierungsstil keine Semikolons verwendet, denken Sie daran, dass, wenn eine Zeile mit einer linken Klammer beginnt, diese mit einem Semikolon vorzupenden. Diese Praxis wird von mehreren Formatierern und/oder Stilrichtlinien empfohlen, darunter Prettier und standard.
const a = 1 ;(1).toString()
Für weitere Ratschläge zur Arbeit mit ASI sehen Sie im Referenzabschnitt nach.
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
delete
typeof