parseInt有趣的問題


    我在Javascript.tw的facebook有人分享了一個題目parseInt(1/0,19)的答案是多少呢?
經由上面的高手講解後,我總算是瞭解了。我也順便分享一下理解出來的過程。

    你可以用一些javascript的debug工具去看答案是18,那為什麼是18呢?

    首先你可以看一下parseInt的用法:http://www.w3schools.com/jsref/jsref_parseint.asp

parseInt(string, radix)

    第一個輸入的值會是string,而(1/0).toString是"Infinity"的字串
而radix輸入的數字是19,所以他的基底是到j(如果不懂的話,想一下16進0~f)

16進位  0 1 2 3 4 5 6 7 8 9   a   b   c   d   e   f
19進位  0 1 2 3 4 5 6 7 8 9   a   b   c   d   e   f   g   h   i    j
10進位  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

    所以當parseInt parse "Infinity"的字串到I就會停止了所以結果就會傳回18,
因為下一個字n並沒有在radix的範圍內,所以parseInt就不會繼續paese下去。

console.log(parseInt('n', 19)); // 結果是NaN

    接著parseInt('ab', 19)的結果會是多少呢?答案是201為什麼呢?
一樣想著16進位轉10進位的方法就可以知道為什麼了。

a = 10, b= 11
10*19^1 + 11*19^0 = 190+11 = 201

張貼留言

這個網誌中的熱門文章

解釋scope.$apply用來做什麼? -- AngularJS

Unions 在C語言的簡單介紹

JavaScript的Timer用法