一.基本用法(只接受一個參數,可以當做第二個參數默認是10):parseInt的返回值只有兩種可能,不是一個十進制整數,就是NaN。
a.將字符串轉為整數。parseInt('123') // 123
b.如果字符串頭部有空格,空格會被自動去除。parseInt(' 81') // 81
c.如果parseInt的參數不是字符串,則會先轉為字符串再轉換。這個很重要
d.字符串轉為整數的時候,是一個個字符依次轉換,如果遇到不能轉為數字的字符,就不再進行下去,返回已經轉好的部分。
e.如果字符串的第一個字符不能轉化為數字(后面跟着數字的正負號除外),返回NaN。
f.如果字符串以0x或0X開頭,parseInt會將其按照十六進制數解析。parseInt('0x10') // 16
g.如果字符串以0開頭,將其按照10進制解析。parseInt('011') // 11
h.如果參數以0開頭,但不是字符串,則會先將數值轉成字符串,然后解析,見規則c parseInt(011) // 9
i.對於那些會自動轉為科學計數法的數字,parseInt會將科學計數法的表示方法視為字符串,因此導致一些奇怪的結果。
parseInt(1000000000000000000000.5) // 1
// 等同於
parseInt('1e+21') // 1
parseInt(0.0000008) // 8
// 等同於
parseInt('8e-7') // 8
二.進制轉換(接收兩個參數):parseInt方法還可以接受第二個參數(2到36之間),表示被解析的值的進制,返回該值對應的十進制數。默認情況下,parseInt的第二個參數為10,即默認是十進制轉十進制。
a.第一個參數解析規則參照第一條基本用法
b.如果第二個參數不是數值,會被自動轉為一個整數。這個整數只有在2到36之間,才能得到有意義的結果,超出這個范圍,則返回NaN。如果第二個參數是0、undefined和null,則直接忽略。