ES6学习之路

105 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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的特点:

  1. 结尾 +n,这是为了与Number类型区分
  2. 不能与普通数值进行混合运算 1 != 1n
  3. 不能使用正号,但可以使用 负号

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]