5

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

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

我更想知道 alert(b) 中的 javascript 在这里应用了什么转换?(如果我将它们放在双引号中。它们工作正常。)

4

3 回答 3

3
var b = 00015

是一个八进制数

请参阅此问题以获取解决方案

于 2013-06-14T17:44:18.217 回答
3

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

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

于 2013-06-14T17:44:28.677 回答
2

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

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

var b = "00015"; // or var b = document.getElementById('some_input').value
var numB = parseInt(b, 10); // 15
于 2013-06-14T17:49:54.290 回答