持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
ES6对数值的扩展
Number.EPSILON
Number.EPSILON是 JavaScript 能够表示的最小精度。即误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。
Number.EPSILON === Math.pow(2, -52) // true
这里就会涉及到JS精度缺失的问题,很经典的一个问题是0.1+0.2 === 0.3输出是true还是false,我先透个答案false。至于为什么,等我后面理出文章会把链接放后面滴。
Number.isSafeInteger()
JavaScript能准确表达数值范围在(-2^52,2^52)的整数,而Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内,同时可以使用最大值Number.MAX_SAFE_INTEGER和最小值Number.MAX_SAFE_INTEGER进行比较。
ES6对Math的扩展
Math.trunc()
Math.trunc方法用于去除一个数的小数部分,返回整数部分。大于0的向下取整,相当于Math.floor(),小于0的部分向上取值,相当于Math.ceil()
Math.trunc(5.20) // 5
Math.trunc(-2.9) // -2
Math.trunc方法参数为非数值时,先转换成数字,在进行取整输出;当参数为空或者非数值时,输出NaN
Math.trunc(true) // 1
Math.trunc(false) // 0
Math.trunc('3.1415926') // 3
Math.trunc('pig') // NaN
Math.trunc(null) // 0
Math.trunc(undefined) // NaN
Math.trunc('') // 0
Math.trunc() // NaN
Math.sign()
Math.sign方法用来判断一个数到底是正数、负数、还是零。
- 参数为正数,返回
+1; - 参数为负数,返回
-1; - 参数为 0,返回
0; - 参数为-0,返回
-0; - 其他值,返回
NaN。
Math.sign(5) // +1
Math.sign(-2) // -1
Math.sign(0) // 0
Math.sign(+0) // 0
Math.sign(-0) // -0
对于非数值,会先将其转换为数值。
Math.sign(true) // 1
Math.sign(false) // -1
Math.sign('3.1415926') // 1
Math.sign('pig') // NaN
Math.sign(null) // 0
Math.sign(undefined) // NaN
Math.sign('') // 0
Math.sign() // NaN
Math.cbrt()
Math.cbrt()方法用于计算一个数的立方根。
Math.imul()
Math.imul方法返回两个数以 32 位带符号整数形式相乘的结果
ES6引入BigInt
BigInt又称为大整数,是没有位数限制的数字 BigInt的特点:
- 结尾
+n,这是为了与Number类型区分 - 不能与普通数值进行混合运算
1 != 1n - 不能使用正号,但可以使用
负号
ES6对于数组的扩展
扩展运算符...
扩展运算符可用来连接两个数组,相当于Array.push()
const a = [1,2,3]
const b = [4,5,6]
const c = [...a,...b] // [1, 2, 3, 4, 5, 6]
a.push(...b) // a:[1, 2, 3, 4, 5, 6]