2012-06-21 104 views
3

我正在测试一个函数,看看会发生什么,当它的参数是null,并决定放一个else语句。令我惊讶的是,它没有记录我通过的参数,它完全记录了其他的东西。也许有人可以提供一些线索这光,下面的代码:Javascript返回奇怪的值

function testing(o) { 
    if (!o) { 
     return "Sorry, looks like you need to pass an argument.." 
    } else { 
     return o; 
    } 
} 

console.log(testing(02034)); 
//logs 1052 

这是怎么回事?

+0

它与您输入的数字有关。它以基数为8的0开始。 – 0x499602D2

回答

8

在Javascript中,与其他语言一样,以0开头的数字表示它的基数为8(八进制)。

因此,基数8中的02034 =基数10(十进制)中的1052。

+0

基数8是什么意思? – Sethen

+0

@SethenMaleno http://en.wikipedia.org/wiki/Octal – Jay

+3

这是我们使用的系统,如果我们任意有8个手指,而不是10个:) – JeremyWeir

3

领先的“0”导致JavaScript来读取值作为Octal数。当你将它打印到控制台时,它将被转换回它的十进制表示。

+0

@Jay答案 –

+4

的重复这不公平,问题的答案之间的ellapsed时间并不多,可能是@Jay只是简单地回答firts – higuaro

+0

@ h3nr1x - 在回答堆栈溢出问题,就像是一个种族 - 越快,赢家。 ':/' –