【JS】 Difference between parseInt() and Number()

I’ve only used parseInt() until now, but I had a chance to see pull-request using Number(), so I checked it, so I made a note of it.

Differences in behavior

Number() called as a function performs type conversion, parseInt() performs analysis.

parseInt('20p') // => 20
parseInt('10100', 2) // => 20 (Binary number)
parseInt('2e1') // => 2

Number('20p') // => NaN
Number('2e1') // => 20(=2 x 10^1)

Learn a little more about Number()

Number() does not detect implicit octal numbers, but it can detect explicit octal notation.

Number('010') // 10
Number('0o10') // 8 (explicit octal number)

parseInt('010') // 8 (implicit octal number)
parseInt('010', 10) // 10 (decimal radix used)

You can also process hex notation numbers, such as parseInt().

Number('0xF') // 15 (hex number)
parseInt('0xF') // 15 (hex number)

From a performance perspective

typeof parseInt('123') => number
typeof Number('123) => number
typeof new Number('123') => object

The first two return primitives instead of objects, which improves performance.


parseInt() converts a numeric portion of a string containing a number into a numeric value.

Number() interprets the meaning of a string that contains a number and converts it to a number. If the string does not match the grammar, it becomes NaN.


What is the difference between parseInt() and Number()?
How do parseInt() and Number() behave differently when converting strings to numbers?