Number() constructor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
TheNumber() constructor createsNumber objects. When called as a function, it returns primitive values of type Number.
In this article
Syntax
new Number(value)Number(value)Note:Number() can be called with or withoutnew, but with different effects. SeeReturn value.
Parameters
valueThe numeric value of the object being created.
Return value
WhenNumber() is called as a function (withoutnew), it returnsvaluecoerced to a number primitive. Specially,BigInts values are converted to numbers instead of throwing. Ifvalue is absent, it becomes0.
WhenNumber() is called as a constructor (withnew), it uses the coercion process above and returns a wrappingNumber object, which isnot a primitive.
Warning:You should rarely find yourself usingNumber as a constructor.
Examples
>Creating Number objects
const a = new Number("123"); // a === 123 is falseconst b = Number("123"); // b === 123 is truea instanceof Number; // is trueb instanceof Number; // is falsetypeof a; // "object"typeof b; // "number"Using Number() to convert a BigInt to a number
Number() is the only case where a BigInt can be converted to a number without throwing, because it's very explicit.
+1n; // TypeError: Cannot convert a BigInt value to a number0 + 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversionsNumber(1n); // 1Note that this may result in loss of precision, if the BigInt is too large to besafely represented.
BigInt(Number(2n ** 54n + 1n)) === 2n ** 54n + 1n; // falseSpecifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-number-constructor> |