JavaScript ES6 - 数值扩展

Posted 黑木令

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript ES6 - 数值扩展相关的知识,希望对你有一定的参考价值。

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

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

如图所示:

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

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

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

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

以上是关于JavaScript ES6 - 数值扩展的主要内容,如果未能解决你的问题,请参考以下文章

ES6入门教程---数值扩展数组扩展和对象扩展

JavaScript学习笔记--ES6学习 数值的扩展

ES6--字符串正则数值数组的扩展

ES6之路第四篇:数值的扩展

ES6入门系列二(数值的扩展)

es6简单介绍