es6入门笔记-数值

es6中改进的数值,新增方法。

回顾es5之前进制转换,通过toSting和parseInt的方式。点击跳转

二进制与八进制

ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。

1
2
0b111110111 === 503 // true
0o767 === 503 // true

Number.isFinite(), Number.isNaN(),Number.isInteger()

Number.isFinite():判断数值是否为有限的(finite)。
Number.isNaN():判断数值是否是NaN。
Number.isInteger():判断数值是否是整数。

与传统的方法不同,不会先调用Number()转换为数值后再进行判断,而是直接判断,不是number类型的直接返回false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Number.isFinite(10); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('foo'); // false
Number.isFinite('10'); // false
Number.isFinite(true); // false

Number.isNaN(NaN) // true
Number.isNaN(10) // false
Number.isNaN('10') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true'/0) // true
Number.isNaN('true'/'true') // true

Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.1) // false
Number.isInteger("15") // false
Number.isInteger(true) // false

Number.parseInt(), Number.parseFloat()

整合全局方法到Number对象上,行为保持不变。

1
2
3
4
5
6
7
// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45

// ES6的写法
Number.parseInt('12.34') // 12
Number.parseFloat('123.45#') // 123.45

Number.EPSILON

Number.EPSILON 属性表示 1 和大于 1 的最小值(可表示为 Number)的差值。

1
2
3
4
5
x = 0.1;
y = 0.2;
z = 0.3;
equal = (Math.abs(x + y - z) < Number.EPSILON); //true
x+y == z //false

Number.isSafeInteger()

JavaScript 能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。Number.isSafeInteger()用来判断是否在该数值范围内。

Math扩展

  • Math.trunc方法用于去除一个数的小数部分,返回整数部分。非数值默认先调用Number转换。
  • Math.sign方法的返回值判断一个数到底是正数(+1)、负数(-1)、还是零(0 -0),其他值(NaN)。非数值默认先调用Number转换。
  • Math.cbrt方法用于计算一个数的立方根。
  • Math.clz32方法返回一个数的 32 位无符号整数形式有多少个前导 0。
  • Math.imul方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
  • Math.fround 方法返回一个数的单精度浮点数形式。
  • Math.hypot方法返回所有参数的平方和的平方根。

  • Math.expm1(x)返回 ex - 1,即Math.exp(x) - 1。

  • Math.log1p(x)方法返回1 + x的自然对数,即Math.log(1 + x)。如果x小于-1,返回NaN。
  • Math.log10(x)返回以 10 为底的x的对数。如果x小于 0,则返回 NaN。
  • Math.log2(x)返回以 2 为底的x的对数。如果x小于 0,则返回 NaN。

  • Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)

  • Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
  • Math.tanh(x) 返回x的双曲正切(hyperbolic tangent)
  • Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine)
  • Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine)
  • Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)

  • Math.sign()用来判断一个值的正负,但是如果参数是-0,它会返回-0。

指数运算符

ES2016 新增了一个指数运算符(**)。相当于Math.pow(base,exponent)。

1
2
3
4
5
6
7
8
9
10
2 ** 2 // 4
2 ** 3 // 8

let a = 1.5;
a **= 2;
// 等同于 a = a * a;

let b = 4;
b **= 3;
// 等同于 b = b * b * b;

参考链接
http://es6.ruanyifeng.com/#docs/number

------本文结束 感谢阅读------