Less than or equal (<=)
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
Syntax
js
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
js
"a" <= "b"; // true
"a" <= "a"; // true
"a" <= "3"; // false
String to number comparison
js
"5" <= 3; // false
"3" <= 3; // true
"3" <= 5; // true
"hello" <= 5; // false
5 <= "hello"; // false
Number to Number comparison
js
5 <= 3; // false
3 <= 3; // true
3 <= 5; // true
Number to BigInt comparison
js
5n <= 3; // false
3 <= 3n; // true
3 <= 5n; // true
Comparing Boolean, null, undefined, NaN
js
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 Language Specification # sec-relational-operators |
Browser compatibility
BCD tables only load in the browser