ES6 在 Number對象上新增了不少方法javascript
1 . Number.isFinite()判斷是否爲有限的數字java
和全局的isFinite() 方法的區別是模塊化
isFinite('1') === true ; Number.isFinite('1') === false對象
全局的isFinite()先調用Number() 方法 把 變量 轉化爲數字再進行判斷, 因此返回 true,ip
Number.isFinite()只能判斷數字, 對於非數字一概返回falseit
2 , Number.isNaN() 判斷是否爲NAN,變量
只有NaN 才返回true, 不然返回false數據類型
3 , ES6 把全局的parseInt()和parseFloat() 移植到了Number對象上,但行爲保持不變,方法
是爲了逐步減小全局方法, 使語言逐漸模塊化數據
4 , Number.isInterger()判斷是否爲整數, 注意一點,javascript內部整數和浮點數是一樣的存儲方法
因此Number.isInteger(2) === Number.isInteger(2.0)
5, Number.EPSILON是一個極小常量, 通常來講, 差值小於這個極小常量的兩個數咱們就認爲是相等的
由於JavaScript浮點數的計算不精確,0.1+ 0.2 = 0.30000000000000004
若是 Math.abs(0.1+ 0.2 - 0.3) < Number.EPSILON 咱們就認爲 0.1+ 0.2 = 0.3
6 , Number.isSafeInteger()
咱們知道JavaScript表示整數的精度範圍在-2的53次方到2的53次方之間,
超過這個範圍的整數JavaScript就沒法精確表示了,好比
Math.pow(2, 53) + 1 === Math.pow(2 ,53) / true
ES6引入了兩個數來表示這個範圍
Number.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
Number.MIN_SAFE_INTEGER = Math.pow(2, 53) + 1;
判斷一個整數是否落在這個區域就能夠用 Number.isSafeInteger() ,
它只能傳整數進去, 不是整數一概返回false
7 , 基於6 咱們知道JavaScript沒法準確的表示大於2的53次方的整數,
由此ES6新增了一個bigint的數據類型, 數值後面加n 來區分數字
typeof 1234n === 'bigint'
當計算Math.pow(2, 53) + 1 的時候
9007199254740992 + 1 = 9007199254740992 (不精確)
9007199254740992n + 1n = 9007199254740993n (精確)
在調用toString() 方法返回結果