ES6的数值扩展

64 阅读3分钟

ES6的数值扩展

ES6(ECMAScript 2015)为数值(Number)类型引入了许多新的扩展和方法,使得数值操作更加方便和强大。以下是 ES6 中数值的主要扩展:

  1. 二进制和八进制表示法

ES6 引入了新的字面量表示法,用于直接表示二进制和八进制数值。

  • 二进制:前缀 0b0B
  • 八进制:前缀 0o0O

示例:

const binary = 0b1010; // 二进制,表示十进制的 10
const octal = 0o12;    // 八进制,表示十进制的 10
console.log(binary);   // 输出: 10
console.log(octal);    // 输出: 10
  1. Number.isFinite()

判断一个值是否为有限的数值(即不是 Infinity-InfinityNaN)。

示例:

console.log(Number.isFinite(42));      // 输出: true
console.log(Number.isFinite(Infinity)); // 输出: false
console.log(Number.isFinite(NaN));     // 输出: false
  1. Number.isNaN()

判断一个值是否为 NaN。与全局的 isNaN() 不同,Number.isNaN() 不会进行类型转换。

示例:

console.log(Number.isNaN(NaN));      // 输出: true
console.log(Number.isNaN('NaN'));    // 输出: false
console.log(isNaN('NaN'));           // 输出: true(全局 isNaN 会进行类型转换)
  1. Number.parseInt()Number.parseFloat()

将全局方法 parseInt()parseFloat() 移植到 Number 对象上,行为与全局方法一致。

示例:

console.log(Number.parseInt('42px')); // 输出: 42
console.log(Number.parseFloat('3.14abc')); // 输出: 3.14
  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.EPSILON

表示 JavaScript 中数值的最小精度,用于浮点数比较。

示例:

console.log(Number.EPSILON); // 输出: 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.isSafeInteger()

判断一个值是否为安全整数(即在 Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER 之间)。

示例:

console.log(Number.isSafeInteger(42)); // 输出: true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // 输出: false
  1. Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER

表示 JavaScript 中安全整数的最大值和最小值。

示例:

console.log(Number.MAX_SAFE_INTEGER); // 输出: 9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // 输出: -9007199254740991
  1. Math 对象的扩展

ES6 为 Math 对象新增了一些方法,用于数值计算:

(1) Math.trunc()

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

示例:

console.log(Math.trunc(3.14)); // 输出: 3
console.log(Math.trunc(-3.14)); // 输出: -3

(2) Math.sign()

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

示例:

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

(3) Math.cbrt()

计算一个数的立方根。

示例:

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

(4) Math.hypot()

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

示例:

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

(5) Math.log2()Math.log10()

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

示例:

console.log(Math.log2(8));  // 输出: 3
console.log(Math.log10(100)); // 输出: 2
  1. 指数运算符 (**)

ES6 引入了指数运算符 (**),用于计算幂运算。

示例:

console.log(2 ** 3); // 输出: 8
console.log(3 ** 2); // 输出: 9

总结

ES6 为数值类型引入了许多实用的扩展和方法,包括:

  • 二进制和八进制表示法。
  • 新的 Number 方法:isFinite()isNaN()isInteger()isSafeInteger() 等。
  • 新的 Math 方法:trunc()sign()cbrt()hypot() 等。
  • 指数运算符 (**)。

这些扩展使得数值操作更加方便和精确,是现代 JavaScript 开发中不可或缺的工具。

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