Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Gruppierungsoperator ( )
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
DerGruppierungsoperator( ) 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.
In diesem Artikel
Probieren Sie es aus
console.log(1 + 2 * 3); // 1 + 6// Expected output: 7console.log(1 + (2 * 3)); // 1 + 6// Expected output: 7console.log((1 + 2) * 3); // 3 * 3// Expected output: 9console.log(1 * 3 + 2 * 3); // 3 + 6// Expected output: 9Syntax
(expression)Parameter
expressionJederAusdruck, der ausgewertet werden soll, einschließlichdurch Kommas verbundener Ausdrücke.
Beschreibung
Der Gruppierungsoperator besteht aus einem Paar von Klammern um einen Ausdruck, der die Inhalte gruppiert. Der Operator überschreibt die normaleOperatorpriorität, sodass Operatoren mit niedriger Priorität (so niedrig wie derKomma Operator) vor einem Operator mit höherer Priorität ausgewertet werden können.
Beispiele
>Verwendung des Gruppierungsoperators
Auswerten von Addition und Subtraktion vor Multiplikation und Division.
const a = 1;const b = 2;const c = 3;// default precedencea + b * c; // 7// evaluated by default like thisa + (b * c); // 7// now overriding precedence// addition before multiplication(a + b) * c; // 9// which is equivalent toa * c + b * c; // 9Beachten 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 Funktionsaufrufea(),b() undc() von links nach rechts ausgewertet (die normale Auswertungsreihenfolge), bevor die Operatorreihenfolge berücksichtigt wird.
a() * (b() + c());Die Funktiona wird vor der Funktionb aufgerufen, die vor der Funktionc aufgerufen wird. Weitere Informationen zur Operatorpriorität finden Sie auf derReferenzseite.
Verwendung des Gruppierungsoperators zur Beseitigung von Analysemehrdeutigkeiten
EinAusdrucksstattement kann nicht mit dem Schlüsselwortfunction beginnen, da der Parser es sonst als Beginn einerFunktionsdeklaration ansehen würde. Das bedeutet, dass die folgendeIIFE-Syntax ungültig ist:
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 denvoid Operator verwenden, um Mehrdeutigkeiten zu beseitigen.
In einemPfeilfunktions- Ausdrückskörper (einer, der direkt einen Ausdruck ohne das Schlüsselwortreturn 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.
const f = () => ({ a: 1 });Wenn eine Eigenschaft auf einem Zahlenliteral zugegriffen wird, könnte derEigenschafts-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"Gruppierungsoperator und automatische Semikolon-Einfügung
Der Gruppierungsoperator kannautomatische Semikolon-Einfügungs- (ASI) Fallstricke abmildern. Zum Beispiel dürfen zwischen demreturn Schlüsselwort und dem zurückgegebenen Ausdruck kein Zeilenumbruch stehen:
function sum(a, b) { return a + b;}Dieser Code wirdundefined zurückgeben, da direkt nach demreturn Schlüsselwort ein Semikolon eingefügt wird, was dazu führt, dass die Funktion sofort zurückkehrt, ohnea + 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 demreturn Schlüsselwort ein Ausdruck folgt und die Semikolon-Einfügung zu verhindern:
function sum(a, b) { return ( a + b );}Allerdings kann das Gruppieren auchASI-_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, darunterPrettier undstandard.
const a = 1;(1).toString()Für weitere Ratschläge zur Arbeit mit ASI sehen Sie imReferenzabschnitt nach.
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-grouping-operator> |