前言javascript
新的一年,新的一週已經週三了,今天咱們繼續來看由前端早讀課專欄做者@HetfieldJoe帶來的翻譯分享。html
正文從這開始~前端
爲了更好的聯想,上中詳見:java
數字字面量擴展ide
在ES5以前,數字字面量看起來就像下面的東西 —— 八進制形式沒有被官方指定,惟一被容許的是各類瀏覽器已經實質上達成一致的一種擴展:spa
注意: 雖然你用不一樣的進制來指定一個數字,可是數字的數學值纔是被存儲的東西,並且默認的輸出解釋方式老是10進制的。前面代碼段中的三個變量都在它們當中存儲了值42。翻譯
爲了進一步說明052是一種非標準形式擴展,考慮以下代碼:code
ES5繼續容許這種瀏覽器擴展的八進制形式(包括這樣的不一致性),除了在strict模式下,八進制字面量(052)是不容許的。作出這種限制的主要緣由是,許多開發者彷佛習慣於下意識地爲了將代碼對齊而在十進制的數字前面前綴0,而後遭遇他們徹底改變了數字的值的意外!
ES6延續了除十進制數字以外的數字字面量能夠被表示的遺留的改變/種類。如今有了一種官方的八進制形式,一種改進了的十六進制形式,和一種全新的二進制形式。因爲Web兼容性的緣由,在非strict模式下老式的八進制形式052將繼續是合法的,但其實應當永遠再也不被使用了。
這些是新的ES6數字字面形式:
惟一容許的小數形式是十進制的。八進制,十六進制,和二進制都是整數形式。
並且全部這些形式的字符串表達形式都是能夠被強制轉換/變換爲它們的數字等價物的:
雖然嚴格來講不是ES6新增的,但一個不爲人知的事實是你其實能夠作反方向的轉換(好吧,某種意義上的):
事實上,以這種方你能夠用從2到36的任何進製表達一個數字,雖然你會使用標準進制 —— 2,8,10,和16 ——以外的狀況很是少見。
Unicode
我只能說這一節不是一個窮盡了「關於Unicode你想知道的一切」的資料。我想講解的是,你須要知道在ES6中對Unicode改變了什麼,可是咱們不會比這深刻太多。Mathias Bynens (http://twitter.com/mathias) 大量且出色地撰寫/講解了關於JS和Unicode (參見 https://mathiasbynens.be/notes/javascript-unicode 和 http://fluentconf.com/javascript-html-2015/public/content/2015/02/18-javascript-loves-unicode)。
從0x0000到0xFFFF範圍內的Unicode字符包含了全部的標準印刷字符(以各類語言),它們都是你可能看到過和互動過的。這組字符被稱爲 基本多文種平面(Basic Multilingual Plane (BMP))。BMP甚至包含像這個酷雪人同樣的有趣字符: ☃ (U+2603)。
在這個BMP集合以外還有許多擴展的Unicode字符,它們的範圍一直到0x10FFFF。這些符號常常被稱爲 星形(astral) 符號,這正是BMP以外的字符的16組 平面 (也就是,分層/分組)的名稱。星形符號的例子包括