The less than operator (<
) returns true
if the left operand is less than the right operand, and false
otherwise.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
语法
x < y
Description
The operands are compared using the Abstract Relational Comparison algorithm, which is roughly summarised 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 (ECMA-262) Relational operators |
Browser compatibility
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.