带前导零的Javascript变量

带前导零的Javascript变量,javascript,leading-zero,Javascript,Leading Zero,Javascript的行为与具有前导零的值不同。 警报(b)-打印不同的值 var a = 67116; var b = 00015; alert(a); alert(b); 我更想知道javascript内部警报(b)在这里应用了什么转换? (如果我把它们用双引号引起来的话,它们很好用。) 是一个八进制数 有关解决方案,请参阅。前导的0使值成为八进制文字,因此您输入的值将被解释为以8为基数的整数 换句话说,015将等同于parseInt('15',8)正如其他答案所说,前导零使数字成为八进制

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

var a = 67116;
var b = 00015;
alert(a);
alert(b);
我更想知道javascript内部警报(b)在这里应用了什么转换? (如果我把它们用双引号引起来的话,它们很好用。)

是一个八进制数


有关解决方案,请参阅。前导的
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

是的,这到底是怎么回事:如果它们在引号中,它是一个字符串,会被逐字读出来。@Kris,你的昵称和我的前女友一样,我现在很沮丧:/。。。这很奇怪吗?也许你太奇怪了……我最好说,你是她的前任。我宁愿把你放在变量b中。这会给你新的十进制生命。这与“弱键入”无关
var b = "00015"; // or var b = document.getElementById('some_input').value
var numB = parseInt(b, 10); // 15