// Number called as function, return primitive
(typeofNumber(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 (newNumber(3))) === "object"
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 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")));