In JavaScript, eval(010) returns 8 [duplicate]
Because 010 is parsed as octal. Javascript treats a leading zero as indicating that the value is in base 8.
Similarly, 0x10 would give you 16, being parsed in hex.
If you want to parse a string using a specified base, use parseInt:
parseInt('010', 8); // returns 8.
parseInt('010',10); // returns 10.
parseInt('010',16); // returns 16.
Prefixing a number with an 0
means it's octal, i.e. base 8. Similar to prefixing with 0x
for hexadecimal numbers (base 16).
Use the second argument of parseInt
to force a base:
> parseInt('010')
8
> parseInt('010', 10)
10