有三個函數(shù)可以把非數(shù)值轉(zhuǎn)化為數(shù)值
Number ()parseInt ()parseFloat ()
Number ()
- 如果是Boolean值,true 返回 1,false 返回 0 。
Number(true) //1
Number(false) //0
- 如果是數(shù)字,就是原樣
Number(3.1415) //3.1415
- 如果是null,返回 0
Number(null) //0
- 如果是undefined,返回NaN
Number(undefined) //NaN
- 如果是字符串,有以下規(guī)則
- 如果是字符串中只包含數(shù)字(包括前面帶正號或負(fù)號的情況),則將其轉(zhuǎn)化成十進(jìn)制數(shù)值,
Number ('123') //123
Number ('+123') //123
Number ('-123') //-123
Number ('0110') //110 前面的0會忽略
- 如果字符串中包含的有效的浮點(diǎn)數(shù),就會轉(zhuǎn)化成對應(yīng)的浮點(diǎn)數(shù),前面的0會忽略
Number ('3.1415') //3.1415
Number ('03.1415') //3.1415
- 如果字符串中包含有效的十六進(jìn)制格式,前面為
0x的格式,會自動轉(zhuǎn)化成相同大小的十進(jìn)制數(shù)。
Number ('0x11') //17
- 如果字符串是空字符串,則返回 0
Number ('') //0
- 如果字符串中包含上述格式外的其他字符,則轉(zhuǎn)化成
NaN。
var x
Number (x) //NaN
// 如果 x 沒有用 var 聲明過,就會報錯。
parseInt ()
-
parseInt方法用于將 字符串 轉(zhuǎn)為整數(shù)。返回值只有兩種可能,不是一個十進(jìn)制整數(shù),就是NaN。
parseInt ('520') //520 整數(shù)轉(zhuǎn)化成整數(shù)
parseInt ('3.1415') //3 浮點(diǎn)數(shù)轉(zhuǎn)化前面的整數(shù)部分
parseInt (' 11') //11 前面的空格會忽略
parseInt ('000011') //11 前面的0會忽略
- 如果parseInt的參數(shù)不是字符串,則會先轉(zhuǎn)為字符串再轉(zhuǎn)換。
parseInt(1.23) // 1
// 等同于
parseInt('1.23') // 1
- 字符串轉(zhuǎn)為整數(shù)的時候,是一個個字符依次轉(zhuǎn)換,如果遇到不能轉(zhuǎn)為數(shù)字的字符,就不再進(jìn)行下去,返回已經(jīng)轉(zhuǎn)好的部分。
parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15
//parseInt的參數(shù)都是字符串,結(jié)果只返回字符串頭部可以轉(zhuǎn)為數(shù)字的部分。
- 如果字符串的第一個字符不能轉(zhuǎn)化為數(shù)字(后面跟著數(shù)字的正負(fù)號除外),返回NaN。
parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1
- parseInt方法還可以接受第二個參數(shù)(2到36之間),表示被解析的值的進(jìn)制,返回該值對應(yīng)的十進(jìn)制數(shù)。默認(rèn)情況下,parseInt的第二個參數(shù)為10,即默認(rèn)是十進(jìn)制轉(zhuǎn)十進(jìn)制。
parseInt('1000', 10) // 1000 以十進(jìn)制解讀(默認(rèn))
parseInt('1000', 2) // 8 以二進(jìn)制解讀
parseInt('1000', 6) // 216 以六進(jìn)制解讀
parseInt('1000', 8) // 512 以八進(jìn)制解讀
parseInt('10', 37) // NaN 進(jìn)制超出范圍,就返回 NaN
parseInt('10', 1) // NaN 進(jìn)制超出范圍,就返回 NaN
parseInt('10', 0) // 10
parseInt('10', null) // 10
parseInt('10', undefined) // 10 第二個參數(shù)是0、null、undefined 則直接忽略
parseFloat ()
-
parseFloat用于將一個字符串轉(zhuǎn)為浮點(diǎn)數(shù)。
parseFloat('3.14') // 3.14 浮點(diǎn)數(shù)轉(zhuǎn)浮點(diǎn)數(shù)
parseFloat('314e-2') // 3.14
parseFloat('0.0314E+2') // 3.14 科學(xué)計數(shù)法轉(zhuǎn)換
parseFloat ('3.14abc') // 3.14 轉(zhuǎn)換前面的數(shù)值部分
parseFloat (' 3.14') // 3.14
parseFloat ('00003.14') // 3.14 前面的 0 和空格忽略
- 如果第一個字符不能轉(zhuǎn)化成浮點(diǎn)數(shù),就返回
NaN
parseFloat([]) // NaN 空數(shù)組返回 NaN
parseFloat('FF2') // NaN 第一個字符不能轉(zhuǎn)化浮點(diǎn)數(shù)
parseFloat('') // NaN 空字符串轉(zhuǎn)化為 NaN
parseFloat () 和 Number () 的區(qū)別
parseFloat(true) // NaN
Number(true) // 1
parseFloat(null) // NaN
Number(null) // 0
parseFloat('') // NaN
Number('') // 0
parseFloat('123.45#') // 123.45
Number('123.45#') // NaN