2021.04.24(ES6 Math对象的扩展)

Math.trunc()

Math.trunc  方法用于去除一个数的小数部分,返回整数部分。

1.  Math.trunc(4.1) // 4
2.  Math.trunc(4.9) // 4
3.  Math.trunc(-4.1) // -4
4.  Math.trunc(-4.9) // -4
5.  Math.trunc(-0.1234) // -0

对于非数值, Math.trunc  内部使用 Number  方法将其先转为数值。

1.  Math.trunc('123.456') // 123
2.  Math.trunc(true) //1
3.  Math.trunc(false) // 0
4.  Math.trunc(null) // 0

对于空值和无法截取整数的值,返回 NaN  。

1.  Math.trunc(NaN); // NaN
2.  Math.trunc('foo'); // NaN
3.  Math.trunc(); // NaN
4.  Math.trunc(undefined) // NaN

Math.sign()

Math.sign  方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
它会返回五种值。

 

  •  参数为正数,返回 +1  ;
  •     参数为负数,返回 -1  ;
  •  参数为 0,返回 0  ;
  •     参数为-0,返回 -0  ;
  •  其他值,返回 NaN  。

 

1.  Math.sign(-5) // -1
2.  Math.sign(5) // +1
3.  Math.sign(0) // +0
4.  Math.sign(-0) // -0
5.  Math.sign(NaN) // NaN

如果参数是非数值,会自动转为数值。对于那些无法转为数值的值,会返回 NaN  。

1.  Math.sign('') // 0
2.  Math.sign(true) // +1
3.  Math.sign(false) // 0
4.  Math.sign(null) // 0
5.  Math.sign('9') // +1
6.  Math.sign('foo') // NaN
7.  Math.sign() // NaN
8.  Math.sign(undefined) // NaN

Math.cbrt()

Math.cbrt()  方法用于计算一个数的立方根。

1.  Math.cbrt(-1) // -1
2.  Math.cbrt(0) // 0
3.  Math.cbrt(1) // 1
4.  Math.cbrt(2) // 1.2599210498948732

对于非数值, Math.cbrt()  方法内部也是先使用 Number()  方法将其转为数值。

1.  Math.cbrt('8') // 2
2.  Math.cbrt('hello') // NaN

Math.hypot()

Math.hypot  方法返回所有参数的平方和的平方根。

1.  Math.hypot(3, 4); // 5
2.  Math.hypot(3, 4, 5); // 7.0710678118654755
3.  Math.hypot(); // 0
4.  Math.hypot(NaN); // NaN
5.  Math.hypot(3, 4, 'foo'); // NaN
6.  Math.hypot(3, 4, '5'); // 7.0710678118654755
7.  Math.hypot(-3); // 3

上面代码中,3 的平方加上 4 的平方,等于 5 的平方。
如果参数不是数值, Math.hypot  方法会将其转为数值。只要有一个参数无法转为数值,就会返回
NaN。

指数运算符

ES2016 新增了一个指数运算符( **  )。

 

1.  2 ** 2 // 4
2.  2 ** 3 // 8

 

这个运算符的一个特点是右结合,而不是常见的左结合。多个指数运算符连用时,是从最右边开始计算
的。

1.  // 相当于 2 ** (3 ** 2)
2.  2 ** 3 ** 2
3.  // 512

上面代码中,首先计算的是第二个指数运算符,而不是第一个。
指数运算符可以与等号结合,形成一个新的赋值运算符( **=  )。

1.  let a = 1.5;
2.  a **= 2;
3.  // 等同于 a = a * a;
4.
5.  let b = 4;
6.  b **= 3;
7.  // 等同于 b = b * b * b;

 

2021-04-24 12:05:32

 

上一篇:面试 10:玩转 Java 选择排序和插入排序


下一篇:Java排序算法 归并排序