Less than (<)
The less than operator (<
) returns true
if the left operand is less than the right operand, and false
otherwise.
Syntax
x < y
Description
The operands are compared using the Abstract Relational Comparison algorithm, which is roughly summarized below:
- First, objects are converted to primitives using
Symbol.ToPrimitive
with thehint
parameter be'number'
. - If both values are strings, they are compared as strings, based on the values of the Unicode code points they contain.
- Otherwise JavaScript attempts to convert non-numeric types to numeric values:
- Boolean values
true
andfalse
are converted to 1 and 0 respectively. null
is converted to 0.undefined
is converted toNaN
.- Strings are converted based on the values they contain, and are converted as
NaN
if they do not contain numeric values.
- Boolean values
- If either value is
NaN
, the operator returnsfalse
. - Otherwise the values are compared as numeric values.
Examples
String to string comparison
console.log("a" < "b"); // true
console.log("a" < "a"); // false
console.log("a" < "3"); // false
String to number comparison
console.log("5" < 3); // false
console.log("3" < 3); // false
console.log("3" < 5); // true
console.log("hello" < 5); // false
console.log(5 < "hello"); // false
console.log("5" < 3n); // false
console.log("3" < 5n); // true
Number to Number comparison
console.log(5 < 3); // false
console.log(3 < 3); // false
console.log(3 < 5); // true
Number to BigInt comparison
console.log(5n < 3); // false
console.log(3 < 5n); // true
Comparing Boolean, null, undefined, NaN
console.log(true < false); // false
console.log(false < true); // true
console.log(0 < true); // true
console.log(true < 1); // false
console.log(null < 0); // false
console.log(null < 1); // true
console.log(undefined < 3); // false
console.log(3 < undefined); // false
console.log(3 < NaN); // false
console.log(NaN < 3); // false
Specifications
Specification |
---|
ECMAScript Language Specification # sec-relational-operators |
Browser compatibility
BCD tables only load in the browser