Number数据类型
=> 正数,负数,零,小数
=> NaN: not a number 不是一个有效数字,但是属于number类型的
=> Infinity: 无穷大的值,也是number类型的
console.log(1 == 1) // =>true
console.log(NaN == NaN) // => false NaN 和 任何值都不相等(包括自己本身)
/*
* 想要验证一下n是不是有效数字; isNaN 专业用来检测某一值是否为有效数字的,如果是有效数字,则返回
* false,如果不是有效数字,则返回 true
*/
let n = NaN;
if(n==NaN){ // 这样判断是不行的 }
console.log(isNaN(1)); // => false
console.log(isNaN(NaN)); // => true
console.log(isNaN(Infinity)); // => false
/*
* 再使用isNaN 进行检测的时候,如果检测的值是非数字类型的值,则需要先把其转换为 数字类型,然后再进行
* 检测
* 把其他数据类型转换为数字类型
* + Number(value) 而isNaN 再检测的时候,使用的就是这种方式转换为数字类型的
* + parseInt(value);
* + parseFloat(value);
*
* Number 是js内置的转换方法,可以把其他数据类型‘强制’转换为数字类型
* + 把字符串转换为数字: 一旦字符串中出现非有效数字字符,则结果为NaN,只有都是有效数字字符,
* 才能转换为具体的数字,空字符串转化为0
* + 把布尔转换为数字:true 转换为 1 false转换为 0
* + 把空转换为数字: null转换为0 undefined 转换 为 NaN
* + 不能把Symbol类型转换为数字,否则会报错
* + 对象转换为数字
* +普通对象
* +数组对象
* +其余对象格式基本上都会变为数字NaN
* + 函数转为数字:结果都是NaN
*/
console.log(Number('12')); // => 12
console.log(Number('12.5')); // => 12.5
console.log(Number('12px')); // => NaN
console.log(Number('12.5.0')); // => NaN
console.log(Number(true)); // => 1
console.log(Number(false)); // => 0
console.log(Number(null)); // => 0
console.log(Number(undefined)); // => NaN
console.log(Number(Symbol(13))); // => Cannot convert a Symbol value to a number
console.log(Number(function func(){})); // => NaN
/*
* 普通对象
* 1,先把obj转化为字符串 "[object Object]"
* 2, 把字符串转换 为数字 Number("[object Object]")
* let obj = {x: 100};
* console.log(Number(obj)) // => NaN
*/
/*
* 普通数组
* 1,先把数组转化为字符串 "10"
* 2, 把字符串"10"转化为数字: 10
* let arr = ['10'];
* console.log(Number(arr)) // => 10
*//*
* 普通数组
* 1,先把数组转化为字符串 "10,20"
* 2, 把字符串"10,20"转化为数字: NaN
* let arr = ['10','20'];
* console.log(Number(arr)) // => NaN
*/
/*
* 特殊的几个
* console.log(Number([])); // => [] => '' Number('') => 0
* console.log(Number(['AA'])); // => ['AA'] => 'AA' Number('AA') => NaN
*/