W3cubDocs

/JavaScript

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 summarised below:

  • First, objects are converted to primitives using Symbol.ToPrimitive with the hint 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 and false are converted to 1 and 0 respectively.
    • null is converted to 0.
    • undefined is converted to NaN.
    • Strings are converted based on the values they contain, and are converted as NaN if they do not contain numeric values.
  • If either value is NaN, the operator returns false.
  • 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

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Less than (a < b) 1 12 1 3 3 1
Mobile
Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
Less than (a < b) 1 18 4 10.1 1 1.0
Server
Node.js
Less than (a < b) 0.1.100

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Less_than