关于parseInt面试题
parsetInt([val],[radix])處理機(jī)制
? [val] 必須是一個(gè)字符串,如果不是,則也要默認(rèn)轉(zhuǎn)換為字符串
? [radix]不設(shè)置(或者寫(xiě)的是零):正常都是按照10處理的,如果字符串是以”0x“開(kāi)始的,默認(rèn)值是16
? 先在[val]中,找到所有符合[radix]進(jìn)制的內(nèi)容(從左到右查找,直到遇到不符合的為止「不論后面是否還有符合進(jìn)制的,都不在查找了」),然后再把找到的內(nèi)容看做[radix]進(jìn)制,轉(zhuǎn)換為十進(jìn)制
[radix]范圍 2~36,除了0以外(0->10/16),不在這個(gè)范圍內(nèi),結(jié)果都是NaN
arr = arr.map((item, index) => {// arr.map原本的意思:// 循環(huán)遍歷數(shù)組中的某一項(xiàng)就會(huì)觸發(fā)回調(diào)函數(shù)// 每一次還會(huì)傳遞當(dāng)前項(xiàng)和當(dāng)前項(xiàng)的索引})-
但是這道題map里不是我們自定義的匿名的回調(diào)函數(shù)了, 而是放的parseInt,所以parseInt現(xiàn)在是map循環(huán)時(shí)的回調(diào)函數(shù)。
-
parseInt也是個(gè)函數(shù),比較常見(jiàn)的用法就是: parseInt(‘12px12’) => 從左側(cè)開(kāi)始查找有效字符,遇到無(wú)效字符就停止查找=>12
-
parseInt特點(diǎn):括號(hào)里不管是什么值,都要轉(zhuǎn)成字符串,從最左側(cè)查找,遇到無(wú)效字符停止查找
-
arr.map遍歷第一項(xiàng)的時(shí)候就相當(dāng)于把回調(diào)函數(shù)parseInt執(zhí)行,并且傳了兩個(gè)參數(shù)item和index
所以總體來(lái)說(shuō)arr.map會(huì)循環(huán)5次
parseInt(‘27.2’, 0) => parseInt不識(shí)別小數(shù)點(diǎn) => parseInt(‘27’, 0) => 27
parseInt(0, 1) => [radix]范圍 2~36 不在這個(gè)范圍都返回NaN => NaN
parseInt(1, 2) => 1* 2^0 = 1
parseInt(‘0013’, 3) => 3進(jìn)制數(shù) (范圍0,1,2),所以會(huì)轉(zhuǎn)化為001 => 1* 3^0 = 1
parseInt(‘123’, 4) => 4進(jìn)制轉(zhuǎn)為10進(jìn)制 1* 4^2+ 2 *4 ^ 1+ 3 *4 ^ 0= 16 + 8 + 3 = 27
parseInt(‘14px’, 5) => 5進(jìn)制數(shù)轉(zhuǎn)為10進(jìn)制 先轉(zhuǎn)化為 14 => 1* 5^1 + 4* 5^0 = 5 + 4 = 9
parseInt(0013, 6) => 以0開(kāi)頭的數(shù)字會(huì)被認(rèn)為是8進(jìn)制數(shù),0013轉(zhuǎn)化為8進(jìn)制數(shù) 1* 8^1 + 3* 8^0 = 11。
然后再轉(zhuǎn)為10進(jìn)制 1* 6^1 + 1*6^0 = 6 + 1 = 7
所以最終答案
需要注意的點(diǎn):
1: 注意parseInt函數(shù)的兩個(gè)參數(shù)
2:進(jìn)制轉(zhuǎn)化問(wèn)題
如果把 ‘0013’ 替換為"0012"
將會(huì)是這樣轉(zhuǎn)化:
3進(jìn)制數(shù) (范圍0,1,2),所以會(huì)轉(zhuǎn)化為 0012 => 1* 3^1 + 2* 3^0 = 5
總結(jié)
以上是生活随笔為你收集整理的关于parseInt面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 华为多交换机trunk.rip应用全网互
- 下一篇: 了解冒泡排序选择排序