Signatur
Beschreibung
Der Kleiner-gleich-Operator (<=) ist ein binärer Vergleichsoperator, der zwei Werte miteinander vergleicht und einen booleschen Wert zurückgibt. Er gibt true zurück, wenn der linke Operand kleiner als oder gleich dem rechten Operand ist — andernfalls false.
Der Vergleich folgt denselben abstrakten Regeln wie der Kleiner-als-Operator (<), jedoch mit zusätzlicher Gleichheitsprüfung. Bei Zahlen wird numerisch verglichen, bei Strings lexikografisch (Zeichencode für Zeichencode). Enthält einer der Operanden NaN, ist das Ergebnis stets false. Wenn ein Operand kein String ist, wird er mit denselben Typ-Konvertierungsregeln wie beim <-Operator in einen primitiven Wert umgewandelt (mittels ToPrimitive, bevorzugt valueOf).
Wichtig zu beachten ist der Unterschied zur strikten Gleichheit (===): <= führt bei unterschiedlichen Typen eine implizite Typkonvertierung durch. So ergibt etwa "5" <= 5 den Wert true, weil der String "5" in die Zahl 5 umgewandelt wird. Bei Objekten wird valueOf() oder toString() aufgerufen, um einen primitiven Vergleichswert zu erhalten.
Typische Einsatzgebiete sind Schleifen-Bedingungen, Bereichsprüfungen (z. B. Altersvalidierung, Preisfilter) sowie das Sortieren und Filtern von Datenmengen. Für verlässliche Vergleiche sollte man auf einheitliche Typen achten oder explizit konvertieren (Number(), parseInt() usw.).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | number | string | boolean | bigint | null | undefined | object | — | Der linke Operand des Vergleichs. Kann ein beliebiger JavaScript-Wert sein; er wird ggf. in einen primitiven Wert konvertiert. |
| $y Pflicht | number | string | boolean | bigint | null | undefined | object | — | Der rechte Operand des Vergleichs. Kann ein beliebiger JavaScript-Wert sein; er wird ggf. in einen primitiven Wert konvertiert. |
Rückgabewert
true, wenn x kleiner als oder gleich y ist; sonst false. Enthält ein Operand NaN, ist der Rückgabewert immer false.Beispiele
Grundlegende Zahlenvergleiche
console.log(3 <= 5); // true
console.log(5 <= 5); // true
console.log(7 <= 5); // false
console.log(-1 <= 0); // true
console.log(NaN <= 5); // false
Bereichsprüfung in einer Funktion
const isValidAge = (age) => age >= 0 && age <= 120;
console.log(isValidAge(25)); // true
console.log(isValidAge(121)); // false
console.log(isValidAge(-1)); // false
Schleife mit <= als Abbruchbedingung
const sum = (n) => {
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
};
console.log(sum(10)); // 55
Implizite Typkonvertierung bei gemischten Typen
console.log("5" <= 5); // true — String wird zu Zahl konvertiert
console.log("10" <= "9"); // true — lexikografischer String-Vergleich!
console.log(false <= 1); // true — false wird zu 0 konvertiert
console.log(null <= 0); // true — null wird zu 0 konvertiert
console.log(undefined <= 0); // false — undefined wird zu NaN
// Wichtig · Fallstricke
Fallstricke bei String-Vergleichen: Werden zwei Strings verglichen, erfolgt der Vergleich lexikografisch nach Unicode-Zeichencodes — nicht numerisch. Daher gilt "10" <= "9" als true, weil "1" (U+0031) einen kleineren Code als "9" (U+0039) hat. Für numerische String-Vergleiche sollte man immer explizit in Number umwandeln: Number("10") <= Number("9") ergibt korrekt false.
BigInt-Vergleiche: BigInt-Werte können mit <= direkt gegen normale Zahlen verglichen werden (42n <= 42 → true), jedoch nicht gegen NaN oder undefined.
null und undefined: null <= 0 ist true (null wird zu 0), aber null == 0 ist false — dieses inkonsistente Verhalten kann zu schwer auffindbaren Bugs führen. undefined <= anything ist stets false, da undefined zu NaN wird.