Javascript 的行为与具有前导零的值不同。alert(b) - 打印不同的值。
var a = 67116;
var b = 00015;
alert(a);
alert(b);
我更想知道 alert(b) 中的 javascript 在这里应用了什么转换?(如果我将它们放在双引号中。它们工作正常。)
Javascript 的行为与具有前导零的值不同。alert(b) - 打印不同的值。
var a = 67116;
var b = 00015;
alert(a);
alert(b);
我更想知道 alert(b) 中的 javascript 在这里应用了什么转换?(如果我将它们放在双引号中。它们工作正常。)
前导0
使值成为八进制文字,因此您输入的值将被解释为以 8 为基数的整数。
换句话说,015
将等价于parseInt('15', 8)
。
正如其他答案所说,前导零使数字成为八进制文字。八进制“15”的十进制表示为“13”。
请注意,没有理由在数字文字上使用前导零,除非您真的希望它们被解释为八进制。我的意思是,不要使用var b = 00015
. 如果您从用户输入中获取该值,那么它将是一个字符串(即"00015"
),您可以使用以下命令转换为十进制数parseInt
:
var b = "00015"; // or var b = document.getElementById('some_input').value
var numB = parseInt(b, 10); // 15