ES6对number数字类型做的常用升级优化
ES6 对数字类型(Number)进行了多项升级和优化,引入了新的方法、属性和语法,使得数字操作更加方便和强大。以下是 ES6 对数字类型的常用升级和优化:
- 二进制和八进制字面量
ES6 引入了二进制(0b 或 0B)和八进制(0o 或 0O)字面量表示法,方便开发者直接使用二进制和八进制数字。
示例:
// 二进制
const binary = 0b1010; // 二进制表示 10
console.log(binary); // 输出:10
// 八进制
const octal = 0o12; // 八进制表示 10
console.log(octal); // 输出:10
Number.isFinite()
- 判断一个值是否为有限的数字(非
Infinity或NaN)。 - 与全局的
isFinite()不同,Number.isFinite()不会将参数转换为数字。
示例:
console.log(Number.isFinite(42)); // 输出:true
console.log(Number.isFinite(Infinity)); // 输出:false
console.log(Number.isFinite("42")); // 输出:false(不会将字符串转换为数字)
Number.isNaN()
- 判断一个值是否为
NaN。 - 与全局的
isNaN()不同,Number.isNaN()不会将参数转换为数字。
示例:
console.log(Number.isNaN(NaN)); // 输出:true
console.log(Number.isNaN("NaN")); // 输出:false(不会将字符串转换为数字)
Number.isInteger()
- 判断一个值是否为整数。
示例:
console.log(Number.isInteger(42)); // 输出:true
console.log(Number.isInteger(42.0)); // 输出:true
console.log(Number.isInteger(42.1)); // 输出:false
Number.isSafeInteger()
- 判断一个值是否为安全整数(即介于
-(2^53 - 1)和2^53 - 1之间的整数)。
示例:
console.log(Number.isSafeInteger(42)); // 输出:true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // 输出:false
Number.parseInt()和Number.parseFloat()
- 将字符串解析为整数或浮点数。
- 与全局的
parseInt()和parseFloat()功能相同,但更推荐使用Number.parseInt()和Number.parseFloat(),以避免全局作用域的污染。
示例:
console.log(Number.parseInt("42")); // 输出:42
console.log(Number.parseFloat("42.5")); // 输出:42.5
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
Number.MAX_SAFE_INTEGER和Number.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
- 指数运算符(
**)
- 用于计算幂运算,替代
Math.pow()。
示例:
console.log(2 ** 3); // 输出:8
console.log(10 ** -2); // 输出:0.01
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_INTEGER和Number.MIN_SAFE_INTEGER表示安全整数范围。- 指数运算符(
**)。 Math对象的扩展(Math.trunc()、Math.sign()、Math.cbrt()等)。
这些特性使得数字操作更加方便和精确,提升了 JavaScript 的数值计算能力。
更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github