數(shù)值的擴(kuò)展

1、對于二進(jìn)制和八進(jìn)制提供了新的寫法
ES6對于二進(jìn)制和八進(jìn)制的數(shù)值提供了新的寫法,分別用0b (或者0B) 和0o (或者0o) 表示。

0b111110111 === 503  // true
0o767 === 503  //true

由于從ES5開始,嚴(yán)格模式中,八進(jìn)制不再允許使用前綴0來表示,因此在ES6中進(jìn)一步明確,要用0o來表示。
如果要將0b和0o前綴的字符串?dāng)?shù)值轉(zhuǎn)換為十進(jìn)制,要使用Number方法

var integerNumber = Number(0b111110111);
integerNumber // 503
Number(0b111);  //7

2、Number.isFinite(),Number.isNaN()
Number.isFinite()方法用來檢查一個數(shù)值是否是有限的(finite)

Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('foo'); // false
Number.isFinite('15'); // false
Number.isFinite(true); // false

Number.isNaN() 方法用來檢查一個值是否是NaN

Number.isNaN(NaN) // true
Number.isNaN(15) // false
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true'/0) // true
Number.isNaN('true'/'true') // true

Number.isNaN 以及 Number.isFinite() 與傳統(tǒng)的方法isNaN()和isFinite()的區(qū)別在于: 傳統(tǒng)的方法中,首先將參數(shù)轉(zhuǎn)換為數(shù)值類型(用Number())然后再判斷,而這兩個方法只對數(shù)值有效,非數(shù)值類型一律返回false。

3、Number.parseInt(), Number.parseFloat()

Number.parseInt === parseInt // true
Number.parseFloat === parseFloat // true

這樣做的好處是逐步的替代全局方法。這也是ES6的方向。

4、Number.isInteger()
Number.isInteger()用來判斷一個值是否為整數(shù)。
在JavaScript的內(nèi)部,整數(shù)和浮點(diǎn)數(shù)是使用同樣的存儲方法,因此3 和3.0 被視為同一個值。 因此需要有一個方法來區(qū)分整數(shù)和浮點(diǎn)數(shù)。
同樣,isInteger()只對數(shù)值類型有效:

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是ES6在Number對象上新增的一個極小常量,目的在于為浮點(diǎn)數(shù)計算設(shè)置一個誤差范圍。
由于JavaScript中浮點(diǎn)數(shù)的計算并不精確,浮點(diǎn)數(shù)的計算誤差如果能小魚Number.EPSILON,就可以認(rèn)為得到了正確結(jié)果,因此, Number.EPSILON的實(shí)質(zhì)是一個可以接受的誤差范圍。

6、 安全整數(shù)
JavaScript能夠精確標(biāo)識 的整數(shù)范圍在 -2^53 到 2^53之間(不含兩端),超過這個范圍就無法精確表示。
因此,ES6引入了Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 這兩個常量,用來標(biāo)識這個范圍的上下限。
Number.isSafeInteger()方法 用來判斷一個整數(shù)是否在這個安全范圍之內(nèi),同時,不是number的參數(shù)一律返回false:

7、Math對象的擴(kuò)展

  1. Math.trunc()
    Math.trunc 用于除去一個數(shù)的小數(shù)部分,返回整數(shù)部分。
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
//對于非數(shù)值,Math.trunc會內(nèi)部使用Number將其轉(zhuǎn)為數(shù)值
Math.trunc("123.456");  //123
//對于空值和無法截取整數(shù)的值,返回NaN
Math.trunc("a");  //NaN
Math.trunc();  //NaN
Math.trunc(NaN);  //NaN

2)Math.sign()
該方法用來判斷一個數(shù)到底是正數(shù),負(fù)數(shù),還是0。有五中返回值。

Math.sign(23.235); //1
Math.sign(25); //1
Math.sign(0); //0
Math.sign(0.0); //0
Math.sign(-0.0); //-0
Math.sign(-0); //-0
Math.sign(-2); //-1
Math.sign(-2.983958); //-1
Math.sign('a'); //NaN
Math.sign(); //NaN
Math.sign(NaN); //NaN

參數(shù)為正數(shù)時,返回1;
參數(shù)為0時,返回0;
參數(shù)為-0時,返回-0;
參數(shù)為負(fù)數(shù)時,返回-1;
參數(shù)為其他值時,返回NaN。

3)Math.cbrt()
該方法用于計算一個數(shù)的立方根,等同于Math.pow(n,1/3)方法。

Math.cbrt(8);  //2
Math.cbrt(-64);  //-4

//對于非數(shù)值,該方法內(nèi)部也是先使用Number方法將其轉(zhuǎn)化為數(shù)值,再進(jìn)行計算

Math.cbrt("125");  //5
Math.cbrt("a");  //NaN

4)Math.hypot()
該方法用于計算所有參數(shù)平方和的平方根。

Math.hypot(3,4);   //5
Math.hypot(1,2,3);  //3.741657386773941
Math.hypot(-5);  //5
Math.hypot();  //0
Math.hypot(NaN);  //NaN
Math.hypot("a");  //NaN
Math.hypot(3,'4');  //5
Math.hypot(3,'a');  //NaN

5)Math.clz32()
32位二進(jìn)制形式表示

Math.clz32(0) //32
Math.clz32(1) //31
Math.clz32(1000) //22
Math.clz32(0b01000000000000000000000000000000) //1
Math.clz32(0b00100000000000000000000000000000) //2

上面的代碼中,0的二進(jìn)制形式全是0,所以有32個前導(dǎo)0;1的二進(jìn)制形式是0b1,只占1位,所以32位中有31個前導(dǎo)0。

6)Math.imul()
Math.imul方法返回兩個數(shù)以32位帶符號整數(shù)形式相乘的結(jié)果,返回的也是一個32位的帶符號整數(shù)。

Math.imul(2, 4) // 8  
Math.imul(-1, 8) // -8  
Math.imul(-2, -2) // 4  

7)Math.fround()
Math.fround 方法返回一個數(shù)的單精度浮點(diǎn)數(shù)形式。
對于整數(shù)來說,Math.fround方法返回結(jié)果不會有任何不同,區(qū)別主要是那些無法用 64 個二進(jìn)制位精確表示的小數(shù)。這時,Math.fround方法會返回最接近這個小數(shù)的單精度浮點(diǎn)數(shù)

Math.fround(0) // 0  
Math.fround(1) // 1  
Math.fround(1.337) // 1.3370000123977661  
Math.fround(1.5) // 1.5  
Math.fround(NaN) // NaN  

8)對數(shù)
Math.expm1(x) 返回 e^x-1,即Math.exp(x)-1
Math.log1p(x) 返回 1 + x 的自然對數(shù)。
Math.log10(x) 返回以 10 為底的x的對數(shù)。
Math.log2(x) 返回以 2 為底的 x 的對數(shù)

9)ES6 新增了 6 個三角函數(shù)方法。
Math.sinh(x) 返回x的雙曲正弦( hyperbolic sine )
Math.cosh(x) 返回x的雙曲余弦( hyperbolic cosine )
Math.tanh(x) 返回x的雙曲正切( hyperbolic tangent )
Math.asinh(x) 返回x的反雙曲正弦( inverse hyperbolic sine )
Math.acosh(x) 返回x的反雙曲余弦( inverse hyperbolic cosine )
Math.atanh(x) 返回x的反雙曲正切( inverse hyperbolic tangent )

8、指數(shù)運(yùn)算符
ES7 新增了一個指數(shù)運(yùn)算符(**),目前Babel 轉(zhuǎn)碼器已經(jīng)支持。

2 ** 2  //4
2 ** 3  //8

(**=)
let a =2;
a **=2;  // a = a*a;

let b = 3;
b **=3 // b = b*b*b;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內(nèi)容