带有前导零的Javascript变量

时间:2013-06-14 17:40:00

标签: javascript leading-zero

Javascript与具有前导零的值的行为不同。 警报(b) - 打印不同的值。

var a = 67116;
var b = 00015;
alert(a);
alert(b);

我更感兴趣知道javascript里面警报(b)在这里应用了什么转换? (如果我用双引号它们。它们工作正常。)

3 个答案:

答案 0 :(得分:4)

由于js是弱类型,因此认为

var b = 00015

是八进制数

请参阅this question了解解决方案

答案 1 :(得分:3)

前导0使值成为八进制文字,因此您输入的值将被解释为基数为8的整数。

换句话说,015将等同于parseInt('15', 8)

答案 2 :(得分:1)

正如其他答案所说,前导零使数字成为八进制文字。八进制“15”的十进制表示为“13”。

请注意,除非您真的希望将它们解释为八进制,否则没有理由在数字文字上使用前导零。我的意思是,不要使用var b = 00015。如果您从用户输入获得该值,那么它将是一个字符串(即"00015"),您可以使用parseInt转换为十进制数字:

var b = "00015"; // or var b = document.getElementById('some_input').value
var numB = parseInt(b, 10); // 15