Less than or equal (<=)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The less than or equal (<=) operator returns true if the left operand is less than or equal to the right operand, and false otherwise.
Try it
console.log(5 <= 3);
// Expected output: false
console.log(3 <= 3);
// Expected output: true
// Compare bigint to number
console.log(3n <= 5);
// Expected output: true
console.log("aa" <= "ab");
// Expected output: true
Syntax
x <= y
Description
The operands are compared using the same algorithm as the Less than operator, with the operands swapped and the result negated. x <= y is generally equivalent to !(y < x), except for two cases where x <= y and x > y are both false:
- If one of the operands gets converted to a BigInt, while the other gets converted to a string that cannot be converted to a BigInt value (it throws a syntax error when passed to
BigInt()). - If one of the operands gets converted to
NaN. (For example, strings that cannot be converted to numbers, orundefined.)
In addition, x <= y coerces x to a primitive before y, while y < x coerces y to a primitive before x. Because coercion may have side effects, the order of the operands may matter.
x <= y is generally equivalent to x < y || x == y, except for a few cases:
- When one of
xoryisnull, and the other is something that's notnulland becomes 0 when coerced to numeric (including0,0n,false,"","0",new Date(0), etc.):x <= yistrue, whilex < y || x == yisfalse. - When one of
xoryisundefined, and the other is one ofnullorundefined:x <= yisfalse, whilex == yistrue. - When
xandyare the same object that becomesNaNafter the first step of Less than (such asnew Date(NaN)):x <= yisfalse, whilex == yistrue. - When
xandyare different objects that become the same value after the first step of Less than:x <= yistrue, whilex < y || x == yisfalse.
Examples
>String to string comparison
"a" <= "b"; // true
"a" <= "a"; // true
"a" <= "3"; // false
String to number comparison
"5" <= 3; // false
"3" <= 3; // true
"3" <= 5; // true
"hello" <= 5; // false
5 <= "hello"; // false
Number to Number comparison
5 <= 3; // false
3 <= 3; // true
3 <= 5; // true
Number to BigInt comparison
5n <= 3; // false
3 <= 3n; // true
3 <= 5n; // true
Comparing Boolean, null, undefined, NaN
true <= false; // false
true <= true; // true
false <= true; // true
true <= 0; // false
true <= 1; // true
null <= 0; // true
1 <= null; // false
undefined <= 3; // false
3 <= undefined; // false
3 <= NaN; // false
NaN <= 3; // false
Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-relational-operators> |
Browser compatibility
Loading…