ES6的数值扩展
ES6(ECMAScript 2015)为数值(Number)类型引入了许多新的扩展和方法,使得数值操作更加方便和强大。以下是 ES6 中数值的主要扩展:
- 二进制和八进制表示法
ES6 引入了新的字面量表示法,用于直接表示二进制和八进制数值。
- 二进制:前缀
0b或0B。 - 八进制:前缀
0o或0O。
示例:
const binary = 0b1010; // 二进制,表示十进制的 10
const octal = 0o12; // 八进制,表示十进制的 10
console.log(binary); // 输出: 10
console.log(octal); // 输出: 10
Number.isFinite()
判断一个值是否为有限的数值(即不是 Infinity、-Infinity 或 NaN)。
示例:
console.log(Number.isFinite(42)); // 输出: true
console.log(Number.isFinite(Infinity)); // 输出: false
console.log(Number.isFinite(NaN)); // 输出: false
Number.isNaN()
判断一个值是否为 NaN。与全局的 isNaN() 不同,Number.isNaN() 不会进行类型转换。
示例:
console.log(Number.isNaN(NaN)); // 输出: true
console.log(Number.isNaN('NaN')); // 输出: false
console.log(isNaN('NaN')); // 输出: true(全局 isNaN 会进行类型转换)
Number.parseInt()和Number.parseFloat()
将全局方法 parseInt() 和 parseFloat() 移植到 Number 对象上,行为与全局方法一致。
示例:
console.log(Number.parseInt('42px')); // 输出: 42
console.log(Number.parseFloat('3.14abc')); // 输出: 3.14
Number.isInteger()
判断一个值是否为整数。
示例:
console.log(Number.isInteger(42)); // 输出: true
console.log(Number.isInteger(42.0)); // 输出: true
console.log(Number.isInteger(42.1)); // 输出: false
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
Number.isSafeInteger()
判断一个值是否为安全整数(即在 Number.MIN_SAFE_INTEGER 和 Number.MAX_SAFE_INTEGER 之间)。
示例:
console.log(Number.isSafeInteger(42)); // 输出: true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // 输出: false
Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER
表示 JavaScript 中安全整数的最大值和最小值。
示例:
console.log(Number.MAX_SAFE_INTEGER); // 输出: 9007199254740991
console.log(Number.MIN_SAFE_INTEGER); // 输出: -9007199254740991
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
- 指数运算符 (
**)
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