ES8 語言規範發布,附ES6,ES7,ES8規範文檔下載
想下載ES6,ES7,ES8規範文檔的,直接翻到本文文章末尾
Ecma 國際公布了第八版的 ECMAScript 語言規範 ECMAScript 2017(或 ES8)。ECMAScript 是標準化的 JavaScript 語言,1997 年發布了第一版,1998 年和 1999 年發布了第二和第三個版本,之後沉寂 了許多年,直到 Ajax 流行起來後標準工作才再次起步,2009 年發布了第五個版本,自 2015 年起每年發布一個版本。ECMAScript 2017 的主要變化包括:Object.values/Object.entries、字元串填充、Object.getOwnPropertyDescriptor、尾隨逗號、非同步函數、共享內存和原子,等。
ECMAScript 2018 已在制定中。
ES2017介紹
對很大一部分JavaScript開發者來說,ES2017可以讓他們感受到新的、閃亮的技術前沿工具。無論是完全接受這項新技術,還是簡單地只使用其中測試工具的功能,我們都想知道ES2017中到底有什麼。
如果你熱衷於了解這個令人興奮的社區提供的所有新技術,下面是ES2017所包含的技術細節。
主要特點1、非同步函數
TJ Holowaychuk是JavaScript社區的一個巨大貢獻者。TJ曾在Express, Koa, Rework, 和Co這樣的項目中工作過,他的代碼直接或間接地成為這些開發項目中的重要組成部分。
他對Co包做出的貢獻,對最近轉移到Stage 4 的Async Await功能規格產生了巨大的影響。Co 是一個利用Promises和Generator函數允許以更加同步的方式來讀取非同步JavaScript代碼語法的庫。
用Promises處理Async函數的一種普遍流程如下所示:
使用ES2017中的新增async和await關鍵字,我們可以利用全新的、與Co高度相似的語法來實現完全同步讀取。我們可以使用try / catch blocks和新的關鍵字來為特定功能分配非同步行為。在內部,Async功能與生成器的功能相同,但是卻不能轉換為Generator Functions。就像這樣:
可以使用以下的方式編寫ES2017中的Async函數:
非同步函數聲明
非同步函數表達式
非同步方法定義
非同步箭頭函數
2、共享內存和Atomics
Lars Hansen提出了ES2017中 共享內存和Atomics的建議,截至2017年2月,它已在第4階段中被批准,並包含到規範中。
此功能引入了一個新的低級別Atomics命名空間對象和一個SharedArrayBuffer構造函數,來作為更高級別並發抽象的原始構建塊。這使開發人員能夠共享多個service worker和核心線程之間的SharedArrayBuffer對象的數據。這種引入帶來了巨大的益處,因為可以更輕鬆地在worker之間共享數據,從而可以改善worker之間的協調。
有關新的Atomics對象和SharedArrayBuffer構造函數的信息,請閱讀深入分析或閱讀Lars Hansen的簡短教程。
次要功能1、功能參數列表和調用中的結尾逗號
該函數結尾逗號的建議是一個純粹的語法更新的規範。在此規範更改之前,不允許在最後一個函數參數後面加上逗號,如下所示:
ES2017帶來了結尾逗號:
這種語法更新使得函數中的逗號與規範的其餘部分更加一致。在數組和對象文字中使用後綴逗號已經很普遍,現在我們可以使用相同的行為來進行函數列表和調用。
另外,這個規格更改是git友好的,因為開發人員不再需要編輯2行代碼,以便為功能列表或調用添加1個參數。即使在最後一個參數之後,現在也可以使用逗號。
2、Object.values/ Object.entries
JordanHarband提出的Object.entries引入了一個entry概念。對象是鍵值對的數據結構,每個鍵值對都是entry。Object.entries(x)強制轉換x為對象,並以數組的方式返回其可枚舉的自定義字元串:
與Object.entries非常相似,Object.values返回一個數組,其值為可枚舉的字元串鍵值屬性:
兩種方法的簽名Object.entries( )和Object.values( )如下:
3、字元串填充
引入了StringPadding規範功能,為JavaScript的一些本地方法提供了處理字元串功能。它提供了padStart和padEnd以及trimStart和trimEnd方法,從而使開發人員更好地控制字元串原語。
4、Object.getOwnPropertyDescriptors
ECMAScript中沒有單個方法來簡化兩個對象之間的正確拷貝。之前,功能編程和不可變對象是複雜應用程序的重要組成部分,每個框架或庫都在實現自己的樣板,以便在合成對象或原型之間,能夠正確複製屬性。
Object.getOwnPropertyDescriptors()是一個複數函數Object.getOwnPropertyDescriptor()旨在簡化JavaScript中複製對象的過程。
Object.defineProperties()這個新的規範功能的引入,允許decorators可以輕鬆地從另一個類或混合中提取出所有的描述符,並將它們分配給一個新的對象。
這個提案的部分原因,也是因為使用Object.assign()方法不夠理想。Object.assign( )以吞噬行為的方式複製對象- 它直接訪問屬性和符號而不是其描述符。當涉及組合和處理複雜對象和類的原型時,這可能會成為一個更為危險的問題。
通過這個規範更新,開發人員不再需要依賴Object.assign()來複制對象,而是利用一個真正的淺層拷貝的創建:
出自:葡萄城控制項
點擊展開全文
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※Webpack 2 快速入門
※為什麼程序員提到工資時會說K?
※深入貫徹閉包思想,全面理解JS閉包形成過程
※蘋果向中國開發者宣戰了,兩萬餘APP遭下架
TAG:JavaScript |
※ECMAScript 2018 語言規範正式發布
※美光、WD發布1TB microSD卡,SD 7.1規範速度985MB/s,TF卡超SATA SSD性能
※美光、WD發布1TB microSD卡,SD 7.1規範速度985MB/s
※USB新規範公布:USB 3隻有USB 3.2 砍掉3.0和3.1
※NVMe1.4規格發布 NVMe-oF1.1規範進入會員審核
※SD UC卡發布:最大容量升級到128TB、新規範極速可達985MB/s
※三度搶在前頭,傳 AMD Ryzen 3000 支持 JEDEC DDR4-3200 規範
※群聯發布PS5017主控:支持SD Express 7.1規範
※USB規範標準再更新:全部都叫USB 3.2
※小白請當心:根據最新規範,USB 3.0和3.1取消,統一改叫USB 3.2
※第二版ISO-26262 即將登場,IP供應商納入被規範行列
※ECMAScript 2018 語言規範草案出爐,支持非同步迭代
※西數推出新款SN500固態硬碟 NVMe規範
※985MB/s!microSD Express規範發布:TF卡速堪比SSD
※SD 7.0規範發布:容量增加到最高128TB
※SD 卡迎來 7.0 規範,支持 986MB/s 傳輸速度與 128TB 容量
※PCIe 5.0細節規範:信號速率再翻倍 達到32GT/s
※工信部:IDC、ISP、CDN 清理規範工作延長至 19年3 月底
※PCIe 6.0初步規範公布:帶寬翻倍 狂飆至256GB/s
※PCIE5.0規範制定完成:單個插槽每秒可傳輸64GB數據