當前位置:
首頁 > 知識 > ES8 語言規範發布,附ES6,ES7,ES8規範文檔下載

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()來複制對象,而是利用一個真正的淺層拷貝的創建:

出自:葡萄城控制項

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 JavaScript 的精彩文章:

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數據