在JS中除了传统的数字,NaN也是number类型的值
NaN:not a number 不是一个数,但是属于number类型的
isNaN:这个方法是用来检测当前的值是否不是一个有效数字的,如果检测的值不是有效数字返回TRUE,是 有效数字返回FALSE
console.log(isNaN(NaN));//=>TRUE console.log(isNaN(1));//=>FALSE console.log(isNaN('1'));//=>FALSE 它是有效数字:当浏览器发现我们检测的值不是NUMBER类型的时候, 首先会默认的把值转换为NUMBER类型,然后再验证是否是有效的数字 '1'->1 isNaN(1)->false console.log(isNaN(true));//=>首先把布尔类型转换为数字 TRUE->1 FALSE->0 最后的结果是isNaN(1)->false console.log(isNaN(false));//=>FALSE console.log(isNaN(null));//=>NULL转换为数字0 =>FALSE console.log(isNaN(undefined));//=>UNDEFINED转换为数字的NaN =>TRUE
Number()
把其它数据类型的值转换为number类型; isNaN在检测的时候,浏览器默认把其它类型转换为number类型,使用的就是这个方法
Number(true) =>1 Number(false) =>0 Number(null) =>0 Number(undefined) =>NaN Number('') =>0 Number('12') =>12 Number('12.5') =>12.5 Number('true') =>NaN Number('12px') =>NaN =>使用Number把字符串转换为数字的时候,空字符串是零,其它字符串中如果出现的字符代表纯数字可以转为正常的数字, 如果出现了任何一个非有效数字的字符,最后的结果都是NaN Number({name:'zxt'}) =>NaN Number({}) =>NaN Number([12,23]) =>NaN Number([12]) =>12 Number(['aa']) =>NaN Number([]) =>0 Number(/^$/) =>NaN Number(function(){}) =>NaN =>使用Number把引用数据类型转为数字类型的时候,先把引用类型转换为字符串(toString),然后再把字符串转为数字 ({name:'zxt'}).toString() =>"[object Object]" ({}).toString() =>"[object Object]" [12,23] => "12,23" [12] => "12" [] => "" ['aa'] =>"aa"
parseInt()
也是把其它数据类型转换为数字,整体情况和Number用法一样,区别在于:在转换字符串的时候,Number是只要出现一个 非有效数字字符结果就是NaN, parseInt没有这么霸道,它能把有效的部分识别出来转为数字,非有效的部分直接忽略掉
Number('12px') =>NaN parseInt('12px') =>12 parseInt('12px13') =>12 在查找转换的时候,按照从左到右的顺序依次查找,一直到遇到一个非有效数字字符结束 (不管后面是否还有有效数字字符,都不在继续查找),把找到的转换为数字 parseInt('px13') =>NaN parseInt([12,13]) =>12
parseFloat()
用法和parseInt一样,区别在于,parseFloat可以识别小数点
parseInt('12.5px') =>12 parseFloat('12.5px') =>12.5 parseFloat('12.5.8px') =>12.5 parseFloat('px12.5') =>NaN
JS这门语言是松散类型的
在JS中创建变量直接使用var/const/let定义即可,可以存储任何数据类型的值 后台语言(JAVA),创建变量,会根据存储值的不同使用不同的关键字来创建 int :整数 float:短浮点 double:长浮点 Array:创建数组 Object:创建对象 …
toFixed()
控制数字保留小数点后面几位
12.5.toFixed() =>不写参数,相当于不留小数点,会把数字四舍五入到整数上 =>'13' 12.4.toFixed(0) =>'12' 12.4.toFixed(2) =>'12.40' Math.PI.toFixed(2) =>'3.14' Math.PI.toFixed(-2) =>Uncaught RangeError: toFixed() digits argument must be between 0 and 20