JS: Number Constructor
new Number(arg)-
return a object that represent the number arg.
// Number called as constructor, returns object console.assert((typeof (new Number(3))) === "object"); Number(arg)-
return a Primitive Value of the number arg
// Number called as function, return primitive console.assert((typeof Number(3)) === "number");
Special Results
| Argument Type | Result |
|---|---|
undefined | Return NaN. |
null | Return +0. |
true or false | Return 1 if argument is true. Return +0 if argument is false. |
| Number | Return argument (no conversion). |
| String | Return a number or NaN. |
| Symbol | Throw a TypeError exception. |
| Object | Return a number or NaN |
Example. Special Literal Values of Number to Primitive
/* test convert undefined and null to number primitive. */ console.assert(Number.isNaN(Number(undefined))); console.assert(Number(null) === 0); /* test convert boolean value to number primitive. */ console.assert(Number(true) === 1); console.assert(Number(false) === 0);
/* test convert number literal value to number primitive. */ console.assert(Number(Infinity) === Infinity); console.assert(Number(-Infinity) === -Infinity); console.assert(Number.isNaN(Number(NaN)));
Example. Convert String to Number Primitive
console.assert(Number("0.03") === 0.03); // extra zero before or after is ok console.assert(Number("00.03") === 0.03); console.assert(Number("00.030") === 0.03); // extra space in front or back are ok console.assert(Number(" 0.03 ") === 0.03); console.assert(Number(" +0.03 ") === 0.03); console.assert(Number(" -0.03 ") === -0.03); // cannot have space after sign console.assert(Number.isNaN(Number("- 0.03 "))); // cannot have space between digits console.assert(Number.isNaN(Number("1 000"))); // lowline is ok console.assert(Number.isNaN(Number("1_000")));