Number数据类型
1. NaN
NaN 不是一个数
NaN和任何东西(自己都不认识)
console.log("判断 1 == NaN: " + (1 == NaN));//false
console.log("判断'1' == NaN: " + ('1' == NaN));//false
console.log("判断 NaN == NaN: " + (NaN == NaN));//false
2.isNaN
isNaN 监测是否是一个有效数字,如果是返回false,否则true
语法: isNaN([value]) []:参数描述占位符
isNaN:底层会验证监测是否为Number类型,如果不是,先基于Number()这个方法,把值转换为数字类型,然后再监测
Number(10) ==> 10 -->isNaN(10) ==> false
console.log("isNaN(5): " + isNaN(5));//false
console.log("isNaN('5'): "+isNaN('5'));//false
console.log("isNaN('5we'): "+isNaN('5'));//false
console.log("isNaN('ew5'): "+isNaN('5'));//false
console.log("isNaN('a')" + isNaN('a'));//true
console.log("isNaN(true)" + isNaN(true));//false
console.log("isNaN(false)" + isNaN(false));//false
console.log("isNaN(NaN)" + isNaN(NaN));//true
3. 将其他数据类型转换为Number
- 方法一: 使用Number([value])函数
- 字符串 --> 数字
- 1.如果是纯数字的字符串则直接转换为数字
- 2.如果字符串有非数字内容,则转换为NaN
- 3.如果为空或者空格字符则转换为0
- 4.把引用数据类型转换为数字–>先把他基于toString的方法转换为字符串,然后在转换为数字
- 例: 11 + [] = “11”; //[]数组对象,先转为字符串’’(空) 11 + ‘’= ‘11’
- 规则:JS,浏览器底层渲染规则,V8引擎最底层机制
- 字符串 --> 数字
- 方法二:
- parseInt(String, radix)
- String:需要解析的字符串
- radix:(可选:默认为10)
- 1.可以将数字字符串开始中的字符前有效整数保留
- 2.如果对非String使用parseInt()或者parseFloat()
- 3.先转成String,然后在操作
- parseFloat()
- 1.可以将数字字符串开始中的字符前有效浮点数保留
- 浏览器给的方法(API)
- parseInt(String, radix)
var str = 'px123.3';
console.log("Number('123.123'): " + Number('123.123'));//123.123
console.log("Number('PX123.5'): " + Number('PX123.5')); //NaN
console.log("Number('123.5px'): " + Number('123.5px')); //NaN
console.log(parseInt('px123.3'));//NaN
console.log(parseInt('123.3px'));//123
console.log(parseInt('1f',16));//16(0-9,A-F)进制解析字符串: 16 + 15 = 31
console.log(parseInt('11',2));//2(0,1)进制解析字符串: 2 + 1 = 3
console.log(parseInt('27',8));//8(0-7)进制解析字符串: 14 + 7 = 23
console.log(parseInt('27',10));//10(0-9)进制解析字符串: 20 + 7 = 27
console.log(parseFloat('px123.3'));//NaN
console.log(parseFloat('123.3px'));//123.3
console.log(parseFloat('123.3px'));//123.3
console.log(parseFloat(true));//NaN 底层先把true转为'true',然后praseFloat
console.log("Number(' '): " + Number(' '));// 0
console.log("Number(null): " + Number(null));//0
console.log("Number(false): " + Number(false));//0
console.log("Number(true): " + Number(true));//1
console.log("Number([]): " + Number([]));//0 [].toString() ==> ""
console.log("Number([1]): " + Number([1]));//1 [1].toString() ==> "1"
console.log("Number([1,2]): " + Number([1,2]));//NaN [1,2].toString() ==> "1,2"
console.log("Number(NaN): " + Number(NaN)); //NaN
console.log("Number(undefined): " + Number(undefined));//NaN
console.log("Number(Object): " + Number(Object));//NaN Object.toString() == >"function Object() { [native code] }"
console.log("Number({}): " + Number({}));//NaN ({}).toString ==> "[Object Object]"
console.log("Number({name: '123'}): " + Number({name : '123'}));//NaN ({name: '123'}).toString() ==>"[Object Object]"
console.log("Number(Function): " + Number(Function));//NaN Function.toString() ==> "function Function() { [native code] }"