数值(下)
与数值相关的全局方法
以下方法用于将特定数据类型转换为Number类型数据。如果不是特定数据类型,则会先自动转换为特定数据类型,再调用方法。
-
parseInt():用于将字符串转为整数。
-
如果字符串以
0
开头,将其按照10进制解析。 -
对于那些会自动转为科学计数法的数字,
parseInt
会将科学计数法的表示方法视为字符串,因此导致一些奇怪的结果。parseInt(1000000000000000000000.5) // 1 // 等同于 parseInt('1e+21') // 1 parseInt(0.0000008) // 8 // 等同于 parseInt('8e-7') // 8
-
进制转换:
parseInt
方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt
的第二个参数为10,即默认是十进制转十进制。如果第二个参数不是数值,会被自动转为一个整数。这个整数只有在2到36之间,才能得到有意义的结果,超出这个范围,则返回
NaN
。如果第二个参数是0
、undefined
和null
,则直接忽略。parseInt('10', 37) // NaN parseInt('10', 1) // NaN parseInt('10', 0) // 10 parseInt('10', null) // 10 parseInt('10', undefined) // 10
-
-
parseFloat():将一个字符串转为浮点数。
- 如果字符串符合科学计数法,则会进行相应的转换。
-
二者共有:
-
parseInt
的参数都是字符串,结果只返回字符串头部可以转为数字的部分。 -
如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回
NaN
。 -
会自动过滤字符串前导的空格
parseInt(' \t\v\r1223') // 1223 parseFloat(' \t\v\r12.34\n ') // 12.34
-
-
isNaN():判断一个数值
Number
是否为NaN-
判断
NaN
更可靠的方法是,利用NaN
为唯一不等于自身的值的这个特点,进行判断。function myIsNaN(value) { return value !== value; }
-
-
isFinite():返回一个布尔值,表示某个值是否为正常的数值。
- 除了
Infinity
、-Infinity
、NaN
和undefined
这几个值会返回false
,isFinite
对于其他的数值都会返回true
。
- 除了