ES6 之 数值的扩展

二进制和八进制的表示法

  • 二进制和八进制的新写法:前缀0b(或0B)和0o(或 0O)标示

  • ES5严格模式下,八进制不允许使用前缀0表示
    ES6进一步明确使用前缀0o表示

    // 非严格模式
    (function(){
      console.log(0o11 === 011);
    })() // true

    // 严格模式
    (function(){
      'use strict';
      console.log(0o11 === 011);
    })() // Uncaught SyntaxError: Octal literals are not allowed in strict mode
  • 0b和0o前缀的字符串数值转十进制,要使用Number方法
    Number('0b111');//7
    Number('0o10'); //8

Number.isFinite(),Number.isNaN()

  • Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity
    console.log(Number.isFinite(15));       //true
    console.log(Number.isFinite(0.8));;     //true
    console.log(Number.isFinite(NaN));;     //false
    console.log(Number.isFinite(Infinity));;//false
    console.log(Number.isFinite(-Infinity));;//false
    console.log(Number.isFinite('false'));;     //false
    console.log(Number.isFinite('15'));     //false
    console.log(Number.isFinite(true));     //false
  • Number.isNaN()用来检查一个值是否为NaN。
    console.log(Number.isNaN(NaN)); //true
    console.log(Number.isNaN(15));  //false
    console.log(Number.isNaN('15'));//false
    console.log(Number.isNaN(true));//false
    console.log(Number.isNaN(9 / NaN));//true
    console.log(Number.isNaN('true' / 0));//true
    console.log(Number.isNaN('true' / 'true'));//true

    isFinite(25) // true
    isFinite("25") // true
    Number.isFinite(25) // true
    Number.isFinite("25") // false

    isNaN(NaN) // true
    isNaN("NaN") // true
    Number.isNaN(NaN) // true
    Number.isNaN("NaN") // false
    Number.isNaN(1) // false    

ps:以上两个Number新方法针对传统全局的isFinite()和isNaN()的区别为,
传统方法先调用Number()将非数值转为数值,再进行判断
新方法只对数值有效,对于非数值的一律为false

Number.parseInt(),Number.parseFloat()

    // ES5的写法
    parseInt('12.34') // 12
    parseFloat('123.45#') // 123.45

    // ES6的写法
    Number.parseInt('12.34') // 12
    Number.parseFloat('123.45#') // 123.45

    // 这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。
    Number.parseInt === parseInt // true
    Number.parseFloat === parseFloat // true    

Number.isInteger()

  • Number.isInteger()用来判断一个数值是否为整数。
    Number.isInteger(25) // true
    Number.isInteger(25.1) // false

    # JavaScript 内部,整数和浮点数采用的是同样的储存方法,所以 2525.0 被视为同一个值。
    Number.isInteger(25) // true
    Number.isInteger(25.0) // true

    # 如果参数不是数值,Number.isInteger返回falseNumber.isInteger() // false
    Number.isInteger(null) // false
    Number.isInteger('15') // false
    Number.isInteger(true) // false

如果对数据精度的要求较高,不建议使用Number.isInteger()判断一个数值是否为整数
5E-325由于值太小,会被自动转为0,因此返回true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值