在JavaScript中,eval(010)返回8

Som*_*Guy 7 javascript

如果我使用代码:

string = '010';
write = eval(string);
document.write(write)
Run Code Online (Sandbox Code Playgroud)

我在页面上写了8个.为什么?即使010不是字符串,也会发生这种情况.

dev*_*ity 20

因为010被解析为八进制.Javascript将前导零视为表示该值在基数8中.

类似地,0x10会给你16,用十六进制解析.

如果要使用指定的基础解析字符串,请使用parseInt:

parseInt('010', 8); // returns 8.
parseInt('010',10); // returns 10.
parseInt('010',16); // returns 16.
Run Code Online (Sandbox Code Playgroud)