瀏覽器中,JavaScript的parseInt函數(shù)可以將字符串轉(zhuǎn)換為整數(shù)。其實(shí)現(xiàn)方法是從第一個(gè)字符開始,依次讀取到非數(shù)字字符為止,并忽略前導(dǎo)的空格。例如:
parseInt('123'); // 返回?cái)?shù)字 123 parseInt(' 456'); // 也返回?cái)?shù)字 456
但是,需要注意的是,當(dāng)遇到非數(shù)字字符時(shí),parseInt函數(shù)會(huì)停止讀取,將之前讀取到的數(shù)字返回。例如:
parseInt('123abc'); // 返回?cái)?shù)字 123
這樣的行為可能導(dǎo)致一些意料之外的結(jié)果。比如,-
parseInt('08', 10); // 在某些解析器上返回 8,但在某些解析器上返回 0 parseInt('010'); // 在某些解析器上返回 10,但在某些解析器上返回 8
可以看到,parseInt函數(shù)在解析字符串時(shí)存在一些無法避免的不確定性。但是,可以通過傳遞第二個(gè)參數(shù)來明確說出解析的基數(shù)(即進(jìn)制)。例如:
parseInt('08', 10); // 返回?cái)?shù)字 8 parseInt('010', 10); // 返回?cái)?shù)字 10
在某些情況下,解析的基數(shù)可能非常重要。例如,要將一個(gè)十六進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制整數(shù)時(shí),應(yīng)該傳遞第二個(gè)參數(shù)為 16。否則,數(shù)字的順序?qū)⒈活嵉梗?/p>
parseInt('0xff'); // 255 parseInt('ff', 16); // 255
需要注意的是,parseInt函數(shù)在解析小數(shù)時(shí)僅保留整數(shù)部分。例如:
parseInt('3.14'); // 返回?cái)?shù)字 3
如果想要解析小數(shù),應(yīng)該使用parseFloat函數(shù):
parseFloat('3.14'); // 返回?cái)?shù)字 3.14
最后要提醒的是,當(dāng)parseInt函數(shù)接收到一個(gè)非字符串變量時(shí),會(huì)將其隱式轉(zhuǎn)換為字符串再進(jìn)行解析。例如:
parseInt(123); // 返回?cái)?shù)字 123
但是,應(yīng)該盡量避免這種行為,因?yàn)闀?huì)導(dǎo)致意料之外的結(jié)果。