如果我使用代码:
string = '010';
write = eval(string);
document.write(write)
我在页面上写了 8 个。为什么?即使 010 不是字符串也会发生这种情况。
如果我使用代码:
string = '010';
write = eval(string);
document.write(write)
我在页面上写了 8 个。为什么?即使 010 不是字符串也会发生这种情况。
因为 010 被解析为八进制。Javascript 将前导零视为表示该值在基数 8 中。
同样,0x10 会给你 16,以十六进制解析。
如果要使用指定的基数解析字符串,请使用 parseInt:
parseInt('010', 8); // returns 8.
parseInt('010',10); // returns 10.
parseInt('010',16); // returns 16.
如果您想将字符串输出010
到文档,您可以将值括在引号中:
var octal = eval('"010"');
typeof octal; // "string"
如果您想解析整数或理解八进制,请阅读其他答案。