renatoargh - 21 days ago 9

Javascript Question

I just noticed that:

`//IN CHROME JS CONSOLE`

parseInt("03010123"); //prints: 03010123

//IN NODE.JS

parseInt("03010123"); //prints: 790611

Since both are based on V8, why same operation yielding different results???

Answer Source

Undefined behavior occurs when the string being passed to parseInt has a leading 0, and you leave off the radix parameter.

An integer that represents the radix of the above mentioned string. Always specify this parameter to eliminate reader confusion and to guarantee predictable behavior. Different implementations produce different results when a radix is not specified.

Some browsers default to base 8, and some to base 10. I'm not sure what the docs say about Node, but clearly it's assuming base 8, since `3010123`

in base 8 is `790611`

in base 10.

You'll want to use:

```
parseInt("03010123", 10);
```