ES6对number数字类型做的常用升级优化

63 阅读3分钟

ES6对number数字类型做的常用升级优化

ES6 对数字类型(Number)进行了多项升级和优化,引入了新的方法、属性和语法,使得数字操作更加方便和强大。以下是 ES6 对数字类型的常用升级和优化:

  1. 二进制和八进制字面量

ES6 引入了二进制(0b0B)和八进制(0o0O)字面量表示法,方便开发者直接使用二进制和八进制数字。

示例:

// 二进制
const binary = 0b1010; // 二进制表示 10
console.log(binary); // 输出:10

// 八进制
const octal = 0o12; // 八进制表示 10
console.log(octal); // 输出:10
  1. Number.isFinite()
  • 判断一个值是否为有限的数字(非 InfinityNaN)。
  • 与全局的 isFinite() 不同,Number.isFinite() 不会将参数转换为数字。

示例:

console.log(Number.isFinite(42)); // 输出:true
console.log(Number.isFinite(Infinity)); // 输出:false
console.log(Number.isFinite("42")); // 输出:false(不会将字符串转换为数字)
  1. Number.isNaN()
  • 判断一个值是否为 NaN
  • 与全局的 isNaN() 不同,Number.isNaN() 不会将参数转换为数字。

示例:

console.log(Number.isNaN(NaN)); // 输出:true
console.log(Number.isNaN("NaN")); // 输出:false(不会将字符串转换为数字)
  1. Number.isInteger()
  • 判断一个值是否为整数。

示例:

console.log(Number.isInteger(42)); // 输出:true
console.log(Number.isInteger(42.0)); // 输出:true
console.log(Number.isInteger(42.1)); // 输出:false
  1. Number.isSafeInteger()
  • 判断一个值是否为安全整数(即介于 -(2^53 - 1)2^53 - 1 之间的整数)。

示例:

console.log(Number.isSafeInteger(42)); // 输出:true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // 输出:false
  1. Number.parseInt()Number.parseFloat()
  • 将字符串解析为整数或浮点数。
  • 与全局的 parseInt()parseFloat() 功能相同,但更推荐使用 Number.parseInt()Number.parseFloat(),以避免全局作用域的污染。

示例:

console.log(Number.parseInt("42")); // 输出:42
console.log(Number.parseFloat("42.5")); // 输出:42.5
  1. Number.EPSILON
  • 表示 JavaScript 中两个可表示数字之间的最小差值(约为 2.220446049250313e-16)。
  • 用于浮点数比较时的容差判断。

示例:

function isEqual(a, b) {
  return Math.abs(a - b) < Number.EPSILON;
}

console.log(isEqual(0.1 + 0.2, 0.3)); // 输出:true
  1. Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER
  • Number.MAX_SAFE_INTEGER 表示 JavaScript 中最大的安全整数(2^53 - 1,即 9007199254740991)。
  • Number.MIN_SAFE_INTEGER 表示 JavaScript 中最小的安全整数(-(2^53 - 1),即 -9007199254740991)。

示例:

console.log(Number.MAX_SAFE_INTEGER); // 输出:9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // 输出:-9007199254740991
  1. 指数运算符(**
  • 用于计算幂运算,替代 Math.pow()

示例:

console.log(2 ** 3); // 输出:8
console.log(10 ** -2); // 输出:0.01
  1. Math 对象的扩展

ES6 为 Math 对象新增了一些实用的方法。

Math.trunc()

  • 去除小数部分,返回整数部分。

示例:

console.log(Math.trunc(42.7)); // 输出:42
console.log(Math.trunc(-42.7)); // 输出:-42

Math.sign()

  • 判断一个数的符号,返回 1(正数)、-1(负数)、0(零)或 NaN(非数字)。

示例:

console.log(Math.sign(42)); // 输出:1
console.log(Math.sign(-42)); // 输出:-1
console.log(Math.sign(0)); // 输出:0

Math.cbrt()

  • 计算一个数的立方根。

示例:

console.log(Math.cbrt(27)); // 输出:3

Math.hypot()

  • 计算所有参数的平方和的平方根(即欧几里得距离)。

示例:

console.log(Math.hypot(3, 4)); // 输出:5

Math.log2()Math.log10()

  • 分别计算以 2 和 10 为底的对数。

示例:

console.log(Math.log2(8)); // 输出:3
console.log(Math.log10(100)); // 输出:2

总结

ES6 对数字类型的升级和优化主要包括:

  • 二进制和八进制字面量。
  • 新增方法(Number.isFinite()Number.isNaN()Number.isInteger()Number.isSafeInteger() 等)。
  • Number.EPSILON 用于浮点数比较。
  • Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER 表示安全整数范围。
  • 指数运算符(**)。
  • Math 对象的扩展(Math.trunc()Math.sign()Math.cbrt() 等)。

这些特性使得数字操作更加方便和精确,提升了 JavaScript 的数值计算能力。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github