乐趣区

关于javascript:js学习笔记4与数值相关的全局方法

parseInt()

  • parseInt 用于将字符串转为整数
  • 值得注意的是,转为整数的时候,是一个个字符顺次转换,如果遇到不能转为数字的字符,就不再进行上来,而是返回曾经转好的局部。
parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15

若第一个字符不能转换为数字(正负号除外),返回 NaN。

parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1

综上,parseInt 要么返回一个十进制整数,要么返回 NaN

  • 另外,如果字符串以 0x0X结尾,parseInt会将其依照十六进制数解析。
parseInt('0x10') // 16

如果字符串以 0 结尾,将其依照 10 进制解析。

parseInt('011') // 11

对于那些会主动转为迷信计数法的数字,parseInt会将迷信计数法的示意办法视为字符串,因而导致一些奇怪的后果。

parseInt(1000000000000000000000.5) // 1
// 等同于
parseInt('1e+21') // 1

parseInt(0.0000008) // 8
// 等同于
parseInt('8e-7') // 8

parseInt 还能够用于进制转换

  • parseInt办法还能够承受第二个参数(2 到 36 之间),示意被解析的值的进制,返回该值对应的十进制数。默认状况下,parseInt的第二个参数为 10,即默认是十进制转十进制。
parseInt('1000', 2) // 8
parseInt('1000', 6) // 216
parseInt('1000', 8) // 512
  • 值的留神的是,若第二个参数不是数值,会被主动转为一个整数。这个整数只有在 2 到 36 之间,能力失去有意义的后果,超出这个范畴,则返回 NaN。如果第二个参数是0undefinednull,则间接疏忽。
parseInt('10', 37) // NaN
parseInt('10', 1) // NaN
parseInt('10', 0) // 10
parseInt('10', null) // 10
parseInt('10', undefined) // 10

若字符串蕴含对于指定进制无意义的字符,则从最高位开始,只返回能够转换的数值。如果最高位无奈转换,则间接返回NaN

parseInt('1546', 2) // 1
parseInt('546', 2) // NaN

parseFloat()

  • 用于将一个字符串转换为浮点数
  • 值得注意的是,也是从头一个个进行转换,遇到不能转为浮点数的字符,则不再进行往后转换,返回曾经转好的局部。
parseFloat('3.14more non-digit characters') // 3.14

与 parseInt 不同,parseFloat 能够进行迷信计数法的转换

parseFloat('314e-2') // 3.14
parseFloat('0.0314E+2') // 3.14

与 parseInt 能够将数字转换为字符串不同,parseFloat 必须是字符串。若参数不是字符串,或第一个字符不能转换为浮点数,返回 NaN

parseFloat([]) // NaN
parseFloat('FF2') // NaN
parseFloat('') // NaN

这些特点使得 parseFloat 的转换后果不同于 Number 函数。

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

isNaN()

  • 能够判断一个值是否为 NaN
  • 值得注意的是,此函数只对数值无效,所以当传入字符串时,会返回 true。所以,isNaN 为 true 的值,可能并不是 NaN,而只是一个字符串、对象或者数组
isNaN('Hello') // true
// 相当于
isNaN(Number('Hello')) // true

然而,对于空数组和只有一个数值成员的数组,函数返回 false。这是因为这样的数组能够被 Number 函数转为数值

isNaN([]) // false
isNaN([123]) // false
isNaN(['123']) // false
  • 因而,应用 isNaN 函数前,最好判断下数据类型
function myIsNaN(value) {return typeof value === 'number' && isNaN(value);
}

或者,利用 NaN 为惟一不等于本身值的这一个性

function myIsNaN(value) {return value !== value;}

isFinite()

isFinite办法返回一个布尔值,示意某个值是否为失常的数值。

isFinite(Infinity) // false
isFinite(-Infinity) // false
isFinite(NaN) // false
isFinite(undefined) // false
isFinite(null) // true
isFinite(-1) // true

除了 Infinity-InfinityNaNundefined这几个值会返回 falseisFinite 对于其余的数值都会返回true

退出移动版