# [SOLVED] What is the difference between parseInt() and Number()?

## Issue

How do `parseInt()` and `Number()` behave differently when converting strings to numbers?

## Solution

Well, they are semantically different, the `Number` constructor called as a function performs type conversion and `parseInt` performs parsing, e.g.:

``````// parsing:
parseInt("20px");       // 20
parseInt("10100", 2);   // 20
parseInt("2e1");        // 2

// type conversion
Number("20px");       // NaN
Number("2e1");        // 20, exponential notation
``````

Also `parseInt` will ignore trailing characters that don’t correspond with any digit of the currently used base.

The `Number` constructor doesn’t detect implicit octals, but can detect the explicit octal notation:

``````Number("010");         // 10
Number("0o10")         // 8, explicit octal

parseInt("010");       // 8, implicit octal
parseInt("010", 10);   // 10, decimal radix used
``````

And it can handle numbers in hexadecimal notation, just like `parseInt`:

``````Number("0xF");   // 15
parseInt("0xF"); //15
``````

In addition, a widely used construct to perform Numeric type conversion, is the Unary `+` Operator (p. 72), it is equivalent to using the `Number` constructor as a function:

``````+"2e1";   // 20
+"0xF";   // 15
+"010";   // 10
``````