在my last question中,我发现前导0的数字被解析为八进制数。在this question中,the answer说:
这是一个常见的Javascript问题,有一个简单的解决方案:
只需指定基数或“基数”,如下所示:
parseInt函数( '08',10); // 8
这有效,但只有在数字用引号括起来的情况下才有效。请考虑以下示例:
var test = 0132;
alert(parseInt(test, 10));
JSFiddle:http://jsfiddle.net/VU96M/2/
输出是“90”,而不是“132”。
因此,正如您所看到的,解决方案在这种情况下不起作用。
如果我将一个变量作为参数传递给一个函数,或者从一个函数返回,它具有前导零,如上面的变量test
,我如何将其解析为基数为10的值?
答案 0 :(得分:2)
在strict mode中,JavaScript不允许您执行此类操作 - 定义八进制文字 - 而您将获得异常。开始使用严格模式作为JavaScript代码的默认模式是一个很好的做法。
另外,因为在非严格模式下,如果将test
变量定义为八进制文字或十进制,则您没有线索,因此如果test.toString(8)
test
会给您带来不同的结果定义为0132
或132
。
答案 1 :(得分:1)
答案 2 :(得分:1)
0132在传递给parseInt
之前被视为八进制,因此您实际上是在调用parseInt(90,10)
请改为尝试:
var test = 0132;
parseInt((test).toString(8)); // 132