JS: Number Constructor

By Xah Lee. Date: . Last updated: .
Number(arg)
Convert arg to a number Primitive Value , return it .
// Number called as function, return primitive
(typeof Number(3)) === "number"
new Number(arg)
Convert arg to a number primitive value, return a number object that represent the number.
// Number called as constructor, returns object
(typeof (new Number(3))) === "object"

Special Results

Argument TypeResult
undefinedReturn NaN.
nullReturn +0.
true or falseReturn 1 if argument is true. Return +0 if argument is false.
NumberReturn argument (no conversion).
StringReturn a number or NaN.
SymbolThrow a TypeError exception.
ObjectReturn a number or NaN

Example: Special Literal Values of Number to Primitive

/* test convert number literal value to number primitive. */

console.log(
  Number(Infinity) === Infinity,
  Number(-Infinity) === -Infinity,
  Number.isNaN(Number(NaN)),
);
/* test convert undefined and null to number primitive. */
console.log(
  Number.isNaN(Number(undefined)),
  Number(null) === 0,
);
/* test convert boolean value to number primitive. */
console.log(
  Number(true) === 1,
  Number(false) === 0,
);

Example: Convert String to Number Primitive

console.log(Number("0.03") === 0.03);

// extra zero before or after is ok
console.log(
  Number("00.03") === 0.03,
  Number("00.030") === 0.03,
);

// extra space in front or back are ok
console.log(
  Number("  0.03  ") === 0.03,
  Number("  +0.03  ") === 0.03,
  Number("  -0.03  ") === -0.03,
);

// cannot have space after sign
console.log(Number.isNaN(Number("- 0.03 ")));

// cannot have space between digits
console.log(Number.isNaN(Number("1 000")));

// lowline is ok
console.log(Number.isNaN(Number("1_000")));

JavaScript, Number

BUY ΣJS JavaScript in Depth