基礎(chǔ) parseInt()
parseInt() 函數(shù)解析一個字符串參數(shù)辆脸,并返回一個指定基數(shù)的整數(shù)
const intValue = parseInt(string[, radix]);
// string 要被解析的值囚玫。如果參數(shù)不是一個字符串斋陪,則將其轉(zhuǎn)換為字符串(使用 toString 抽象操作)。字符串開頭的空白符將會被忽略健蕊。
// radix 一個介于 2 和 36 之間的整數(shù)舔箭,表示上述字符串的基數(shù)署鸡,默認為 10。
// 返回值 返回一個整數(shù)或 NaN限嫌。
parseInt("100"); // 100
parseInt("100", 10); // 100
parseInt("100", 2); // 4靴庆,將 100 看作二進制,轉(zhuǎn)化成十進制
在 radix 為 undefined怒医,0 或者沒有指定的情況下炉抒,JavaScript 作如下處理:
- 如果字符串 string 以 "0x" 或者 "0X" 開頭, 則基數(shù)是 16
- 如果字符串 string 以 "0" 開頭, 基數(shù)是 8 或者 10,具體是哪個基數(shù)由實現(xiàn)環(huán)境決定稚叹。ECMAScript 5 規(guī)定使用 10焰薄,但是并不是所有的瀏覽器都遵循這個規(guī)定拿诸。因此,永遠都要明確給出 radix 參數(shù)的值
- 如果字符串 string 以其它任何值開頭塞茅,則基數(shù)是 10
實例解析:
['1', '2', '3'].map(parseInt)
對于 map 的每次迭代亩码,parseInt() 傳遞兩個參數(shù): 字符串和基數(shù)。 所以實際執(zhí)行的的代碼是:
['1', '2', '3'].map((item, index) => {
return parseInt(item, index)
})
每次的迭代展開為:
// 上面說過野瘦,radix 為 0 時描沟,string 以其它任何值開頭,則基數(shù)是 10
parseInt("1", 0); // 1
// 沒有一進制
parseInt("2", 1); // NaN
// 3 不是二進制
parseInt("3", 2); // NaN
例子: