Number数据类型

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)
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] }"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值