2012-06-21 155 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 - 在回答堆棧溢出問題,就像是一個種族 - 越快,贏家。 ':/' –