JS基础知识之number数字类型

在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