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