
字符串轉(zhuǎn)為數(shù)字
前言:面試有點(diǎn)小尷尬(1)
一、parseInt() 和 Number.parseInt()
規(guī)則:
1.忽略字符串前面的空格,直至找到第一個(gè)非空字符
2.如果第一個(gè)非空字符不是數(shù)字或者是正負(fù)號(hào)則返回NaN
3.如果第一個(gè)是數(shù)字字符一直解析到一個(gè)非數(shù)字字符
4.如果第一個(gè)是數(shù)字字符,能識(shí)別出各種整數(shù)格式
5.接受第二個(gè)參數(shù),即轉(zhuǎn)換時(shí)使用的基數(shù)
6.小數(shù)向下取整
Number.parseInt(' 123') // 123
Number.parseInt(' ab123') // NaN
Number.parseInt('') // NaN
Number.parseInt(' 31avs') // 31
Number.parseInt('0xf') // 15
Number.parseInt("070") // es3->56 es5->70
Number.parseInt('A', 16) // 10
Number.parseInt('A') // NaN
Number.parseInt('58.2') // 58
二、parseFloat() 和 Number.parseFloat()
規(guī)則
1.忽略字符串前面的空格,直至找到第一個(gè)非空字符
2.如果第一個(gè)非空字符不是數(shù)字或者是正負(fù)號(hào)則返回NaN
3.如果第一個(gè)是數(shù)字字符一直解析到一個(gè)非數(shù)字字符
4.字符串中第一個(gè)小數(shù)點(diǎn)是有效的第二個(gè)小數(shù)點(diǎn)是無(wú)效的
5.只解析10進(jìn)制,不接受第二個(gè)參數(shù)
Number.parseFloat(' 123') // 123
Number.parseFloat(' ab123') // NaN
Number.parseFloat('') // NaN
Number.parseFloat(' 123.3.4eqw') // 123.3
Number.parseFloat('0xf') // 0
三、Number()
規(guī)則
1.如果是Boolean值,true和false分別返回1或0
2.如果是數(shù)字,只是單純的傳入和返回
3.如果是null,則返回0
4.如果是undefined返回NaN
5.如果是字符串
①如果字符串味空則返回零(忽略前導(dǎo)零)
②如果字符串為整數(shù)則返回整數(shù)(忽略前導(dǎo)零)
③如果字符串為浮點(diǎn)數(shù)則返回浮點(diǎn)數(shù)
④如果字符串為16進(jìn)制,轉(zhuǎn)為10進(jìn)制返回
⑤除以上格式返回NaN
6.如果是對(duì)象,則調(diào)用對(duì)象的valueOf,按照前面的規(guī)則返回值,如果返回NaN,再調(diào)用toString(),按照前面的規(guī)則返回值
Number(true) // 1
Number(false) // 0
Number(null) // 0
Number(undefined) // 0
Number('') // 0
Number('123') // 123
Number('123.12') // 123.12
Number('0xf') // 16