二進(jìn)制和八進(jìn)制表示法
ES6 提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法辛润,分別用前綴0b(或0B)和0o(或0O)表示。
從 ES5 開始,在嚴(yán)格模式之中谋旦,八進(jìn)制就不再允許使用前綴0表示绊含,ES6 進(jìn)一步明確桑嘶,要使用前綴0o表示。
如果要將0b和0o前綴的字符串?dāng)?shù)值轉(zhuǎn)為十進(jìn)制躬充,要使用Number方法逃顶。
Number.isFinite(), Number.isNaN()
ES6 在Number對象上,新提供了Number.isFinite()和Number.isNaN()兩個方法充甚。
Number.isFinite()用來檢查一個數(shù)值是否為有限的(finite)以政,即不是Infinity。
注意伴找,如果參數(shù)類型不是數(shù)值盈蛮,Number.isFinite一律返回false。
NaN驗(yàn)證
NaN是特殊的非數(shù)字技矮,可以使用Number.isNaN()來進(jìn)行驗(yàn)證抖誉。
Number.isNaN()用來檢查一個值是否為NaN殊轴。
如果參數(shù)類型不是NaN,Number.isNaN一律返回false袒炉。
它們與傳統(tǒng)的全局方法isFinite()和isNaN()的區(qū)別在于旁理,傳統(tǒng)方法先調(diào)用Number()將非數(shù)值的值轉(zhuǎn)為數(shù)值,再進(jìn)行判斷我磁,而這兩個新方法只對數(shù)值有效孽文,Number.isFinite()對于非數(shù)值一律返回false,?Number.isNaN()只有對于NaN才返回true,非NaN一律返回false十性。
判斷是否為整數(shù)Number.isInteger(xx)
整數(shù)轉(zhuǎn)換Number.parseInt(xxx)和浮點(diǎn)型轉(zhuǎn)換Number.parseFloat(xxx)
ES6 將全局方法parseInt()和parseFloat()叛溢,移植到Number對象上面,行為完全保持不變劲适。
安全整數(shù)和 Number.isSafeInteger()
JavaScript 能夠準(zhǔn)確表示的整數(shù)范圍在-2^53到2^53之間(不含兩個端點(diǎn))楷掉,超過這個范圍,無法精確表示這個值霞势。
上面代碼中烹植,超出 2 的 53 次方之后,一個數(shù)就不精確了愕贡。
ES6 引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER這兩個常量草雕,用來表示這個范圍的上下限。
上面代碼中固以,可以看到 JavaScript 能夠精確表示的極限墩虹。
Number.isSafeInteger()則是用來判斷一個整數(shù)是否落在這個范圍之內(nèi)。
Math 對象的擴(kuò)展
ES6 在 Math 對象上新增了 17 個與數(shù)學(xué)相關(guān)的方法憨琳。所有這些方法都是靜態(tài)方法诫钓,只能在 Math 對象上調(diào)用。
Math.trunc()
Math.trunc方法用于去除一個數(shù)的小數(shù)部分篙螟,返回整數(shù)部分菌湃。
對于非數(shù)值,Math.trunc內(nèi)部使用Number方法將其先轉(zhuǎn)為數(shù)值遍略。
對于空值和無法截取整數(shù)的值惧所,返回NaN。
Math.sign()
Math.sign方法用來判斷一個數(shù)到底是正數(shù)绪杏、負(fù)數(shù)下愈、還是零。對于非數(shù)值寞忿,會先將其轉(zhuǎn)換為數(shù)值驰唬。
它會返回五種值。
參數(shù)為正數(shù),返回+1叫编;
參數(shù)為負(fù)數(shù)辖佣,返回-1;
參數(shù)為 0搓逾,返回0卷谈;
參數(shù)為-0,返回-0;
其他值霞篡,返回NaN世蔗。
如果參數(shù)是非數(shù)值,會自動轉(zhuǎn)為數(shù)值朗兵。對于那些無法轉(zhuǎn)為數(shù)值的值污淋,會返回NaN。