parseInt(string, radix) 將一個(gè)字符串 string 轉(zhuǎn)換為 radix 進(jìn)制的整數(shù), radix 為介于2-36之間的數(shù)。
如果 parseInt 遇到的字符不是指定 radix 參數(shù)中的數(shù)字,它將忽略該字符以及所有后續(xù)字符,并返回到該點(diǎn)為止已解析的整數(shù)值。 parseInt 將數(shù)字截?cái)酁檎麛?shù)值。 允許前導(dǎo)和尾隨空格。
參數(shù)
/**
- string 要被解析的值。如果參數(shù)不是一個(gè)字符串,則將其轉(zhuǎn)換為字符串。字符串開頭的空白符將會(huì)被忽略。
- radix(可選) 從 2 到 36,代表該進(jìn)位系統(tǒng)的數(shù)字。例如說(shuō)指定 10 就等于指定十進(jìn)位。請(qǐng)注意,通常預(yù)設(shè)值不是 10 進(jìn)位!
*/
parseInt(string, radix)
parseInt(' 012u', 5) // 將 ' 012u' 裝換成 5 進(jìn)制數(shù)
過(guò)濾前面的空格直到下一個(gè)不能轉(zhuǎn)換的位置得出 012 為5進(jìn)制的數(shù),
然后再將 012 轉(zhuǎn)換成十進(jìn)制 0 * 5^2^ + 1 * 5^1^ + 2 * 5^0^ = 7
parseInt(' 0125', 5) // 將 ' 0125' 裝換成 5 進(jìn)制數(shù)
過(guò)濾前面的空格直到下一個(gè)不能轉(zhuǎn)換的位置得出 012(5 不能提出出來(lái)的原因是:因?yàn)?五 進(jìn)制只有0、1、2、3、4) 為5進(jìn)制的數(shù),
然后再將 012 轉(zhuǎn)換成十進(jìn)制 0 * 5^2^ + 1 * 5^1^ + 2 * 5^0^ = 7
返回值
一個(gè)整數(shù)或者 NaN
當(dāng):
radix 小于 2 或大于 36 ,或第一個(gè)非空格字符不能轉(zhuǎn)換為數(shù)字。則返回 NaN
如果 radix 是 undefined、0或未指定的,JavaScript會(huì)假定以下情況:
- 如果輸入的 string以 "0x"或 "0x"(一個(gè)0,后面是小寫或大寫的X)開頭,那么radix被假定為16,字符串的其余部分被解析為十六進(jìn)制數(shù)。
parseInt('0x12', 0) '0x' 開頭解析成 16 進(jìn)制,1 * 16^1^ + 2 * 16^0^ = 18
- 如果輸入的 string以 "0"(0)開頭, radix被假定為8(八進(jìn)制)或10(十進(jìn)制)。具體選擇哪一個(gè)radix取決于實(shí)現(xiàn)。ECMAScript 5 澄清了應(yīng)該使用 10 (十進(jìn)制),但不是所有的瀏覽器都支持。因此,在使用 parseInt 時(shí),一定要指定一個(gè) radix。
parseInt('015', 0) chrom Edge 都默認(rèn)為(十進(jìn)制)
- 如果輸入的 string 以任何其他值開頭, radix 是 10 (十進(jìn)制)。
parseInt('512a', 0) 512
- 如果第一個(gè)字符不能轉(zhuǎn)換為數(shù)字,parseInt會(huì)返回 NaN
parseInt('u512a', 0) NaN
考點(diǎn)
[1, 2, 3].forEach((item, index) => console.log(parseInt(item, index)))
第一次循環(huán): parseInt(1, 0) // 在谷歌中進(jìn)制位傳 0 默認(rèn)十進(jìn)制 所以結(jié)果為 1
第二次循環(huán): parseInt(2, 1) // 進(jìn)制位傳 1 時(shí),所以返回 NaN
第三次循環(huán): parseInt(3, 2) // 因?yàn)槎M(jìn)制只有 0、1 ,所以返回 NaN
【筆記不易,如對(duì)您有幫助,請(qǐng)點(diǎn)贊,謝謝】