parseInt在IE8下的异常
在改bug时,偶遇使用parseInt的一个小问题。
一、问题内容
if (parseInt(str) == num) {
// ...
}
代码中的大意是这样的,这个bug是提在IE8下,定位时并没有快速定位到parseInt上,直到打印结果才发现此处有问题。
当str是'08'时,parseInt的结果居然是0,所以出现了问题。
尝试发现,在IE8下'08'、'09'都会变成0。是因为,以0开头的数字型字符串在转化时,IE8会识别成八进制,0x会被识别为十六进制。因为八进制下8和9是不存在的,所以返回了0。
此时的处理方式可以为:
parseInt('08', 10); // 8
parseInt('010', 10); // 10