一: 数值扩展: 数值处理的新增特性
1. 新增方法
1. 主要是关于数学处理, 如: 立方根、指数 等等
2. 方法调整
1. 有一部分是将原来的全局处理数值相关的方法, 移植到了 Number 对象上 <但是它们的功能不变> 。
3. 数值扩展常用 API 总结:
1. Number.isFinite()
2. Number.isNaN()
/**
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. 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. 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() 方法的区别在于:
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. 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. 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. 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. 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. 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基础” 的相关专栏; 不积跬步,无以至千里, 戒焦戒躁 。