美文网首页
JavaScript ES6 - 数值扩展

JavaScript ES6 - 数值扩展

作者: 黑木令 | 来源:发表于2022-01-03 17:39 被阅读0次

    本章节的主要内容是: ES6 数值扩展

    一: 数值扩展: 数值处理的新增特性
        1. 新增方法
           1. 主要是关于数学处理, 如: 立方根、指数 等等
        2. 方法调整
           1. 有一部分是将原来的全局处理数值相关的方法, 移植到了 Number  对象上 <但是它们的功能不变> 。
        3. 数值扩展常用 API 总结:
           1. Number.isFinite()
           2. Number.isNaN()
    

    如图所示:


    6-1-数值扩展.png

    1. 二进制与八进制

    /**
    1. 二进制与八进制
       1. 在 ES6 中, 二进制的表示方法都是以 0b 开头
       2. 八进制的表示方法是以 0o 开头
       3. 小知识点:
          1. 0b 中的 b 大小写均可以 。
          2. 0o 中的 o 大小写均可以 。
     */
    {
      console.log('二进制数字的表示方式 - 输出结果为 十进制: ', 0b111110111); // 二进制数字的表示方式 - 输出结果为 十进制:  503
      console.log('八进制的表示方法 - 输出结果为 十进制: ', 0o767); // 八进制的表示方法 - 输出结果为 十进制:  503
    
      /**
       * 测试大小写均可
       */
      console.log('二进制数字的表示方式 - B 大小写均可以: ', 0B111110111); // 二进制数字的表示方式 - b 大小写均可以:  503
      console.log('八进制的表示方法 - O 大小写均可以: ', 0O767); // 八进制的表示方法 - O 大小写均可以:  503
    }
    

    2. ES6 Number.isFinite() 方法

    /**
    2. Number.isFinite() 方法
       1. 用来检验一个数值是否是有限的 <即是否是在有效值范围之内的>。
     */
    {
      /**
       * 正常值:
       */
      console.log('isFinite 方法 -- 15: ', Number.isFinite(15)); // isFinite 方法 -- 15:  true
      console.log('isFinite 方法 -- 小数 -- 0.0001', Number.isFinite(0.0001)); // isFinite 方法 -- 小数 -- 0.0001 true
      console.log('isFinite 方法 -- 负数 -- -15', Number.isFinite(-15)); // isFinite 方法 -- 负数 -- -15 true
      /**
       * NaN 为什么是 false? 因为它本身就不是一个数, 使用 Number.isFinite() 方法的前提是首先需要判断当前值得是一个数 。
       */
      console.log('isFinite 方法 -- NaN: ', Number.isFinite(NaN)); // isFinite 方法 -- NaN:  false
      console.log('isFinite 方法 -- 字符串: ', Number.isFinite('字符串')); // isFinite 方法 -- 字符串:  false
      console.log('isFinite 方法 -- "15": ', Number.isFinite('15')); // isFinite 方法 -- "15":  false
      /**
       * 分母为 0
       */
      console.log('isFinite 方法 -- 1/0: ', Number.isFinite(1/0)); // isFinite 方法 -- 1/0:  false
      console.log('isFinite 方法 -- true/0: ', Number.isFinite('true'/0)); // isFinite 方法 -- true/0:  false
      /**
       * bool 值
       */
      console.log('isFinite 方法 -- true: ', Number.isFinite(true)) // isFinite 方法 -- true:  false
      console.log('isFinite 方法 -- false: ', Number.isFinite(false)) // isFinite 方法 -- false:  false
    }
    

    3. ES6 Number.isNaN() 方法:

    /**
    3. Number.isNaN() 方法:
       1. 用来检验一个值是否为 NaN
     */
    {
      /**
       * 判断结果为 true 的情况
       */
      console.log('Number.isNaN 方法 -- NaN: ', Number.isNaN(NaN)); // Number.isNaN 方法 -- NaN:  true
      console.log('Number.isNaN 方法 -- 1/NaN:', Number.isNaN(1/NaN)) // Number.isNaN 方法 -- 1/NaN: true
      console.log('Number.isNaN 方法 -- "true0"/0:', Number.isNaN('true'/0))  // Number.isNaN 方法 -- "true0"/0: true
      console.log('Number.isNaN 方法 -- "true"/"true":', Number.isNaN('true'/'true')) // Number.isNaN 方法 -- "true"/"true": true
      console.log('Number.isNaN 方法 -- ""/"":', Number.isNaN(''/'')) // Number.isNaN 方法 -- ""/"": true
    
      /**
       * 判断结果为 false 的情况
       */
      console.log('Number.isNaN 方法 -- 0:', Number.isNaN(0)); // Number.isNaN 方法 -- 0: false
      console.log('Number.isNaN 方法 -- 字符串 - 123:', Number.isNaN('123')) // Number.isNaN 方法 -- 字符串 - 123: false
      console.log('Number.isNaN 方法 -- 字符串 - 空:', Number.isNaN('')) // Number.isNaN 方法 -- 字符串 - 空: false
      console.log('Number.isNaN 方法 -- bool值 true:', Number.isNaN(true)) // Number.isNaN 方法 -- bool值 true: false
      console.log('Number.isNaN 方法 -- bool值 false:', Number.isNaN(false)) // Number.isNaN 方法 -- bool值 false: false
    }
    

    4. ES5 isFinite() isNaN() 两个方法 与 ES6 Number.isFinite() Number.isNaN() 方法的区别在于

    /**
    4. ES5 isFinite() isNaN() 两个方法 与 ES6 Number.isFinite()  Number.isNaN() 方法的区别在于:
       1. ES5 是先调用 Number() 方法将非数值转化为数值, 二 ES6 中的新方法只对数值有效 。
       2. 即 Number.isFinite() 只对数值有效, 对于非数值一律返回 false; Number.isNaN() 只有对于 NaN 返回 true, 非 NaN 一律返回 false 。
     */
    {
      /**
       * ES5 isFinite() 与 ES6 Number.isFinite() 对比
       */
      console.log('ES5 isFinite 方法', isFinite(5)); // ES5 isFinite 方法 true
      console.log('ES5 isFinite 方法', isFinite('88')); // ES5 isFinite 方法 true
    
      console.log('ES6 Number.isFinite 方法', Number.isFinite(5)); // ES6 Number.isFinite 方法 true
      console.log('ES6 Number.isFinite 方法', Number.isFinite('88')); // ES6 Number.isFinite 方法 false
    
      /**
       * ES5 isNaN() 与 ES6 Number.isNaN() 对比
       */
        console.log('ES5 isNaN 方法', isNaN(NaN)); // ES5 isNaN 方法 true
      console.log('ES5 isNaN 方法', isNaN('NaN')); // ES5 isNaN 方法 true
      console.log('ES6 Number.isNaN 方法', Number.isNaN(NaN)); // ES6 Number.isNaN 方法 true
      console.log('ES6 Number.isNaN 方法', Number.isNaN('NaN')); // ES6 Number.isNaN 方法 false
    }
    

    5. ES6 Number.isInterger

    /**
    5. Number.isInterger
       1. 用来判断一个值是否为整数 。
       2. 它接收的参数必须是一个数, 否则它的返回结果为 false 。
       2. 小知识点:
          1. 在 JS 中, 整数和浮点数是同样的存储方法 。
     */
    {
      console.log('Number.isInterger - 判断一个值是否为整数 - 25:', Number.isInteger(25)); // Number.isInterger - 判断一个值是否为整数 - 25: true
      console.log('Number.isInterger - 判断一个值是否为整数 - 25.0:', Number.isInteger(25.0)); // Number.isInterger - 判断一个值是否为整数 - 25.0: true
      console.log('Number.isInterger - 判断一个值是否为整数 - 25.1:', Number.isInteger(25.1)); // Number.isInterger - 判断一个值是否为整数 - 25.1: false
      console.log('Number.isInterger - 判断一个值是否为整数 - "25":', Number.isInteger('25')); // Number.isInterger - 判断一个值是否为整数 - "25": false
      console.log('Number.isInterger - 判断一个值是否为整数 - true:', Number.isInteger(true)); // Number.isInterger - 判断一个值是否为整数 - true: false
    }
    

    6. ES6 Number.isSafeInteger()

    /**
    6. Number.isSafeInteger()
       1. 用来判断一个数<整数>是否是 -2 的 53 次方 到 2 的 53 次方 之间 (不包含这两个端点) 。
       2. 如果超过这个区间的话, 存储就会不准确 。
       3. 上下限 '常量' 的表示方法:
          1. 上限: Number.MAX_SAFE_INTEGER
          2. 下限: Number.MIN_SAFE_INTEGER
       4. 注意小细节:
          1. 它的参数必须是一个数 。
     */
    {
      console.log('Number.MAX_SAFE_INTEGER - 上限: ', Number.MAX_SAFE_INTEGER); // Number.MAX_SAFE_INTEGER - 上限:  9007199254740991
      console.log('Number.MIN_SAFE_INTEGER - 下限: ', Number.MIN_SAFE_INTEGER); // Number.MAX_SAFE_INTEGER - 上限:  -9007199254740991
    
      console.log('Number.isSafeInteger() -- 判断一个值是否在安全区间内 - 10:', Number.isSafeInteger(10)); // Number.isSafeInteger() -- 判断一个值是否在安全区间内 - 10: true
      console.log('Number.isSafeInteger() -- 判断一个值是否在安全区间内 - a<字符串>:', Number.isSafeInteger('a')); // Number.isSafeInteger() -- 判断一个值是否在安全区间内 - a<字符串>: false
      console.log('Number.isSafeInteger() -- 判断一个值是否在安全区间内 - 1.1<小数>:', Number.isSafeInteger(1.1)); // Number.isSafeInteger() -- 判断一个值是否在安全区间内 - 1.1<小数>: false
    }
    

    7. ES6 Math.trunc()

    /**
    7. Math.trunc()
       1. 去除一个数的小数部分, 返回整数部分 <只获取整数部分, 不进行四舍五入或者向上向下取整>。
       2. 细节知识点:
          1. 对于非数值, Math.trunc() 内部使用 Number 方法先将其转换为数值 。
     */
    // ES5 数值取整方法
    {
      // Math.round(): 返回一个数字四舍五入后的整数部分 。
      console.log('Math.round - 小数部分小于 0.5: ', Math.round(6.01)); // Math.round - 小数部分小于 0.5:  6
      console.log('Math.round - 小数部分大于 0.5: ', Math.round(6.9)); // Math.round - 小数部分大于 0.5:  7
    
      // Math.ceil(): 返回一个大于或等于数字的最小整数, 即向上取整 。
      console.log('Math.ceil - 小数部分小于 0.5: ', Math.ceil(6.01)); // Math.ceil - 小数部分小于 0.5:  7
      console.log('Math.ceil - 小数部分大于 0.5: ', Math.ceil(6.9)); // Math.ceil - 小数部分大于 0.5:  7
    
      // Math.floor(): 返回一个小于或等于数字的最小整数, 即向下取整 。
      console.log('Math.floor - 小数部分小于 0.5: ', Math.floor(6.01)); // Math.floor - 小数部分小于 0.5:  6
      console.log('Math.floor - 小数部分大于 0.5: ', Math.floor(6.9)); // Math.floor - 小数部分大于 0.5:  6
    }
    // ES6 数值取整方法:
    {
      console.log('Math.trunc() -- 小数部分小于 0.5 - 4.1: ', Math.trunc(4.1)); // Math.trunc() -- 小数部分小于 0.5 - 4.1:  4
      console.log('Math.trunc() -- 小数部分大于 0.5 - 4.81: ', Math.trunc(4.81)); // Math.trunc() -- 小数部分大于 0.5 - 4.81:  4
    
      // 细节部分:
      console.log('Math.trunc() 内部使用 Number 方法先将其转换为数值 - 数值字符串: ', Math.trunc('-12.121212')); // Math.trunc() 内部使用 Number 方法先将其转换为数值 - 数值字符串:  -12
      console.log('Math.trunc() 内部使用 Number 方法先将其转换为数值 - NaN: ', Math.trunc(NaN)); // Math.trunc() 内部使用 Number 方法先将其转换为数值 - NaN:  NaN
      console.log('Math.trunc() 内部使用 Number 方法先将其转换为数值 - 字符串: ', Math.trunc('字符串')); // Math.trunc() 内部使用 Number 方法先将其转换为数值 - 字符串:  NaN
      console.log('Math.trunc() 内部使用 Number 方法先将其转换为数值 - ""<空字符串>: ', Math.trunc('')); // Math.trunc() 内部使用 Number 方法先将其转换为数值 - ""<空字符串>:  0
      console.log('Math.trunc() 内部使用 Number 方法先将其转换为数值 - <空: 不传参数>: ', Math.trunc()); // Math.trunc() 内部使用 Number 方法先将其转换为数值 - <空: 不传参数>:  NaN
    }
    

    8. ES6 Math.sign()

    /**
    8. Math.sign()
       1. 判断一个数是: 正数 / 负数 / 0
       2. 输入参数的返回结果:
          1. 参数为负数: 返回 1
          2. 参数为正数: 返回 -1
          3. 参数为 0: 返回 0
          4. 参数为 -0: 返回 -0
          5. 其它值返回 NaN
       2. 细节知识点:
          1. 对于非数值, 会将其转换为数值 。
     */
    {
      console.log('Math.sign() -- 参数为正数: ', Math.sign(555)); // Math.sign() -- 参数为正数:  1
      console.log('Math.sign() -- 参数为 0: ', Math.sign(0)); // Math.sign() -- 参数为 0:  0
      console.log('Math.sign() -- 参数为 -0: ', Math.sign(-0)); // Math.sign() -- 参数为 -0:  -0
      // console.log('Math.sign() -- 参数为 0000000: ', Math.sign(0000000)); // Math.sign() -- 参数为 0000000:  0
      console.log('Math.sign() -- 参数为负数: ', Math.sign(-22222)); // Math.sign() -- 参数为负数:  -1
    }
    

    9. ES6 Math.cbrt()

    /**
    9. Math.cbrt()
       1. 计算一个数的立方根
          1. 当参数为字符串且不为数值字符串时, 返回 NaN 。
       2. 细节知识点:
          1. 对于非数值, 会将其转换为数值 。
     */
    {
      console.log('Math.cbrt() -- 参数=-1: ', Math.cbrt(-1)); // Math.cbrt() -- 参数=-1:  -1
      console.log('Math.cbrt() -- 参数=1: ', Math.cbrt(1)); // Math.cbrt() -- 参数=1:  1
      console.log('Math.cbrt() -- 参数=0: ', Math.cbrt(0)); // Math.cbrt() -- 参数=0:  0
      console.log('Math.cbrt() -- 参数=4: ', Math.cbrt(4)); // Math.cbrt() -- 参数=4:  1.5874010519681996
    
      /**
       * 参数为字符串:
       */
      console.log('Math.cbrt() -- 参数="9"<数字字符串>: ', Math.cbrt('9')); // Math.cbrt() -- 参数="9"<数字字符串>:  2.080083823051904
      console.log('Math.cbrt() -- 参数=:<非数字字符串>', Math.cbrt('字符串')); // Math.cbrt() -- 参数=:<非数字字符串> NaN
    }
    

    以上代码执行结果, 如图所示:


    6-2-数值扩展.png
    6-3-数值扩展.png

    之前有整理过部分知识点, 现在将整理的相关内容, 验证之后慢慢分享给大家; 这个专题是 "前端ES6基础" 的相关专栏; 不积跬步,无以至千里, 戒焦戒躁 。

    如果对大家有所帮助,可以点个关注、点个赞; 文章会持续打磨 。
    有什么想要了解的前端知识, 可以在评论区留言, 会及时分享所相关内容 。

    相关文章

      网友评论

          本文标题:JavaScript ES6 - 数值扩展

          本文链接:https://www.haomeiwen.com/subject/qzgxcrtx.html