ES6 数值
1. 二進制和八進制表示法
ES6提供了二進制和八進制數值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示。
0b111110111 === 503 // true 0o767 === 503 // true 復制代碼2. Number.isFinite(), Number.isNaN()
Number.isFinite()判斷數值是不是有限的,
Number.isNaN()判斷是否是NaN
而這兩個新方法只對數值有效,非數值一律返回false。
3. Number.parseInt(), Number.parseFloat()
ES6將全局方法parseInt()和parseFloat(),移植到Number對象上面,行為完全保持不變。
// ES6的寫法 Number.parseInt('12.34') // 12 Number.parseFloat('123.45#') // 123.45 復制代碼4. Number.isInteger()
Number.isInteger()用來判斷一個值是否為整數。需要注意的是,在JavaScript內部,整數和浮點數是同樣的儲存方法,所以3和3.0被視為同一個值。
Number.isInteger(25) // true Number.isInteger(25.0) // true Number.isInteger(25.1) // false Number.isInteger("15") // false Number.isInteger(true) // false 復制代碼5. Number.EPSILON
Number.EPSILON // 2.220446049250313e-16 復制代碼Number.EPSILON可以用來描述一個可以接受的誤差范圍。
function withinErrorMargin (left, right) {return Math.abs(left - right) < Number.EPSILON; } withinErrorMargin(0.1 + 0.2, 0.3) // true withinErrorMargin(0.2 + 0.2, 0.3) // false 復制代碼6. Math.trunc()
Math.trunc()方法用于去除一個數的小數部分,返回整數部分
Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.trunc(-4.1) // -4 Math.trunc(-4.9) // -4 Math.trunc(-0.1234) // -0 復制代碼對于非數值,Math.trunc內部使用Number方法將其先轉為數值
Math.trunc('123.456') // 123 復制代碼對于空值和無法截取整數的值,返回NaN。
Math.trunc(NaN); // NaN Math.trunc('foo'); // NaN Math.trunc(); // NaN 復制代碼7. Math.sign()
Math.sign方法用來判斷一個數到底是正數、負數、還是零。
參數為正數,返回+1;
參數為負數,返回-1;
參數為0,返回0;
參數為-0,返回-0;
其他值,返回NaN。
Math.sign(-5) // -1 Math.sign(5) // +1 Math.sign(0) // +0 Math.sign(-0) // -0 Math.sign(NaN) // NaN Math.sign('foo'); // NaN Math.sign(); // NaN復制代碼8. Math.cbrt()
求立方根,參數不是數字轉為數字,非法參數返回NaN
Math.cbrt('8') // 2 Math.cbrt('hello') // NaN 復制代碼9. Math.clz32()
JavaScript的整數使用32位二進制形式表示,Math.clz32方法返回一個數的32位無符號整數形式有多少個前導0。
Math.clz32(0) // 32 Math.clz32(1) // 31 Math.clz32(1000) // 22 復制代碼10. Math.imul()
Math.imul方法返回兩個數以32位帶符號整數形式相乘的結果,返回的也是一個32位的帶符號整數。
Math.imul(2, 4) // 8 Math.imul(-1, 8) // -8 Math.imul(-2, -2) // 4 復制代碼如果只考慮最后32位,大多數情況下,Math.imul(a, b)與a * b的結果是相同的,即該方法等同于(a * b)|0的效果(超過32位的部分溢出)。之所以需要部署這個方法,是因為JavaScript有精度限制,超過2的53次方的值無法精確表示。Math.imul方法可以返回正確的低位數值。
11. Math.fround()
Math.fround方法返回一個數的單精度浮點數形式。
Math.fround(0) // 0 Math.fround(1) // 1 Math.fround(1.337) // 1.3370000123977661 Math.fround(1.5) // 1.5 Math.fround(NaN) // NaN 復制代碼12. Math.hypot()
Math.hypot方法返回所有參數的平方和的平方根。
Math.hypot(3, 4); // 5 復制代碼13. 對數
//這里的=指數學的=
Math.expm1(x) = Math.exp(x) - 1 = ex - 1
Math.log1p(x) = Math.log(1 + x) = ln(1 + x)
//這里自帶的Math.log(x)是自然對數lnx,對于其他底的對數,采用換底公式計算 logax = lnx / lna
Math.log10(x) = lgx
Math.log2(x) = log2x
14. 雙曲函數
Math.sinh(x)
Math.cosh(x)
Math.tanh(x)
Math.asinh(x)
Math.acosh(x)
Math.atanh(x)
雙曲函數有以下性質,和圓函數很相似
cosh2x - sinh2x = 1
tanhx * cothx = 1
sinh(x+y) = sinhxcoshy + coshxsinhy
cosh(x+y) = coshxcoshy + sinhxsinhy
......
15. 指數運算符
ES7新增了一個指數運算符(**),目前Babel轉碼器已經支持。
2 ** 2 // 4 2 ** 3 // 8 復制代碼指數運算符可以與等號結合,形成一個新的賦值運算符(**=)。
let a = 2; a **= 2; // 等同于 a = a * a; 復制代碼轉載于:https://juejin.im/post/5b10fd8a6fb9a01e49293762
總結
- 上一篇: 面试题: 数据库 真实面试题已看1 操作
- 下一篇: 现代浏览器的工作原理