Signatur
Beschreibung
Der Größer-als-Operator (>) ist ein binärer Vergleichsoperator, der zwei Werte miteinander vergleicht und einen booleschen Wert zurückgibt. Er liefert true, wenn der linke Operand größer als der rechte Operand ist, andernfalls false. Er gehört zu den relationalen Operatoren und wird typischerweise in Bedingungsausdrücken, Schleifen und Sortierfunktionen eingesetzt.
Der Vergleich folgt dem sogenannten Abstract Relational Comparison-Algorithmus aus der ECMAScript-Spezifikation. Dabei werden beide Operanden zunächst in primitive Werte umgewandelt. Sind beide Werte danach Strings, erfolgt ein lexikografischer (zeichenweise, Unicode-basierter) Vergleich. In allen anderen Fällen werden die Werte in Zahlen konvertiert und numerisch verglichen.
Besondere Vorsicht ist bei gemischten Typen geboten: Der Vergleich "10" > "9" ergibt beispielsweise false, da Strings lexikografisch verglichen werden ("1" kommt vor "9"). Der Vergleich 10 > "9" hingegen ergibt true, weil der String "9" in die Zahl 9 umgewandelt wird. Enthält ein Operand NaN, ist das Ergebnis stets false.
Für strikte, typsichere Vergleiche ohne implizite Typumwandlung bieten sich in manchen Situationen explizite Konvertierungen (z. B. mit Number() oder parseInt()) an, bevor der Operator angewendet wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $leftOperand Pflicht | number | string | bigint | boolean | null | undefined | object | — | Der linke Wert des Vergleichs. Wird ggf. automatisch in einen primitiven Wert umgewandelt. |
| $rightOperand Pflicht | number | string | bigint | boolean | null | undefined | object | — | Der rechte Wert des Vergleichs. Wird ggf. automatisch in einen primitiven Wert umgewandelt. |
Rückgabewert
true, wenn leftOperand größer als rightOperand ist; andernfalls false. Ist einer der Operanden NaN, wird stets false zurückgegeben.Beispiele
Einfacher numerischer Vergleich
console.log(10 > 5); // true
console.log(5 > 10); // false
console.log(5 > 5); // false
const alter = 20;
if (alter > 18) {
console.log("Volljährig");
} else {
console.log("Minderjährig");
}
Lexikografischer String-Vergleich
// Strings werden zeichenweise nach Unicode-Codepunkt verglichen
console.log("banana" > "apple"); // true ("b" > "a")
console.log("10" > "9"); // false ("1" < "9" im Unicode)
console.log(10 > "9"); // true (numerischer Vergleich nach Umwandlung)
console.log("abc" > "ABC"); // true (Kleinbuchstaben haben höhere Codepunkte)
Verwendung in einer Sortierfunktion
const zahlen = [42, 7, 19, 3, 100];
zahlen.sort((a, b) => {
if (a > b) return 1;
if (a < b) return -1;
return 0;
});
console.log(zahlen);
Vergleich mit NaN, null und undefined
console.log(5 > NaN); // false – NaN-Vergleiche sind stets false
console.log(NaN > 5); // false
console.log(1 > null); // true – null wird zu 0 konvertiert
console.log(1 > undefined); // false – undefined wird zu NaN
console.log(0n > -1n); // true – BigInt-Vergleich
// Wichtig · Fallstricke
Gemischte Typen (String vs. Zahl): Wenn nur ein Operand ein String ist, wird der String in eine Zahl umgewandelt. Sind beide Operanden Strings, erfolgt ein lexikografischer Vergleich. Dies führt zu häufigen Fehlern bei Benutzereingaben, die als String vorliegen. Immer explizit konvertieren: Number(eingabe) > 5.
- BigInt und Number: Der Vergleich zwischen
BigIntundNumberist möglich (2n > 1→true), aberBigIntkann nicht mitNaNverglichen werden (ergibtfalse). - Objekte: Objekte werden über
valueOf()odertoString()in primitive Werte umgewandelt. Das Ergebnis kann daher überraschend sein, wenn diese Methoden überschrieben sind. - Kein striktes Äquivalent: Anders als bei
==vs.===gibt es für>kein „striktes" Gegenstück ohne Typumwandlung. Explizite Typkonvertierung vor dem Vergleich ist die empfohlene Praxis.