Number() constructor creates a
Number object. When called instead as a function, it performs type conversion to a primitive number, which is usually more useful.
new Number(value) Number(value)
Number() can be called with or without
new, but with different effects. See Return value.
The numeric value of the object being created.
Number is called as a constructor (with
new), it creates a
Number object, which is not a primitive.
Number is called as a function, it coerces the parameter to a number primitive. BigInts are converted to numbers. If the value can't be converted, it returns
Warning: You should rarely find yourself using
Number as a constructor.
Creating Number objects
const a = new Number('123'); // a === 123 is false const b = Number('123'); // b === 123 is true a instanceof Number; // is true b instanceof Number; // is false typeof 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 number 0 + 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
Number(1n); // 1
Note that this may result in loss of precision, if the BigInt is too large to be safely represented.
BigInt(Number(2n ** 54n + 1n)) === 2n ** 54n + 1n; // false
|ECMAScript Language Specification |
BCD tables only load in the browser
- Polyfill of modern
Numberbehavior (with support binary and octal literals) in
- Integers with arbitrary precision: