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
留言