ES2017中的新功能:異步功能,改進的對像等等
ES2017 (ECMAScript 2017) 為 JavaScript 引入了多項重要更新,本文將重點介紹這些更新,並簡要概述其更新流程。
核心要點
- 異步函數 (Async functions): 允許像編寫同步代碼一樣編寫基於 Promise 的異步代碼。所有現代瀏覽器(IE 和 Opera Mini 除外)和 Node.js 7.6 都支持此功能。
-
對象處理的新方法: 包括
Object.values()
、Object.entries()
和Object.getOwnPropertyDescriptors()
。大多數現代瀏覽器和 Node.js 7.0 都支持這些方法。 - 字符串填充方法 (.padStart() 和 .padEnd()): 簡化字符串格式化。所有現代瀏覽器(IE 除外)和 Node.js 8.0 都支持。
- 允許尾隨逗號: 在對象定義、數組聲明、函數參數列表等中允許尾隨逗號。所有瀏覽器和 Node.js 都支持。函數參數中的尾隨逗號在撰寫本文時僅在 Chrome 58 和 Firefox 52 中受支持。
更新流程
JavaScript (ECMAScript) 標準不斷發展,由眾多廠商在多個平台上實現。 ES6 (ECMAScript 2015) 歷時六年才最終完成,規模龐大。為了簡化流程并快速添加新功能,制定了新的年度發布流程。
技術委員會 39 (TC39) 由瀏覽器廠商等參與者組成,他們遵循嚴格的流程推進 JavaScript 的提案:
階段 0:構想 (strawman) – 對新的或改進的 ECMAScript 功能的初步構想。
階段 1:提案 (proposal) – 由至少一名 TC39 成員倡導的正式提案文件,包括 API 示例、語言語義、算法、潛在障礙、polyfill 和演示。
階段 2:草案 (draft) – 功能規範的初始版本。需要兩個實驗性實現,其中一個可以在 Babel 等轉譯器中實現。
階段 3:候選 (candidate) – 對提案規范進行審查,並收集廠商的反饋。
階段 4:完成 (finished) – 提案已準備好包含在 ECMAScript 中。只有達到此階段的功能才被認為是標準。但是,在瀏覽器和 Node.js 等運行時中,它的發布可能需要更長時間。
ES2016 規模很小,旨在驗證標準化流程。添加了兩個新功能:
- 數組的
.includes()
方法,當數組中包含某個值時返回 true 或 false。 -
a ** b
冪運算符,與Math.pow(a, b)
相同。
ES2017 的新功能
ES2017 (或舊稱 ES8) 被認為是對 ECMAScript 規範的第一次適當修訂。它提供了以下功能……
異步函數
與大多數語言不同,JavaScript 默認情況下是異步的。可能需要任意時間的命令不會停止執行。這包括諸如請求 URL、讀取文件或更新數據庫之類的操作。必須傳遞一個回調函數,該函數在知道該操作的結果時執行。
當必須按順序執行一系列嵌套的異步函數時,這可能會導致回調地獄。例如:
function doSomething() { doSomething1((response1) => { doSomething2(response1, (response2) => { doSomething3(response2, (response3) => { // etc... }; }); }); }
ES2015 (ES6) 引入了 Promise,它提供了一種更清晰的方式來表達相同的功能。一旦你的函數被 Promisify,它們就可以使用以下方式執行:
function doSomething() { doSomething1() .then(doSomething2) .then(doSomething3) }
ES2017 異步函數擴展了 Promise,使異步調用更加清晰:
async function doSomething() { const response1 = await doSomething1(), response2 = await doSomething2(response1), response3 = await doSomething3(response2); }
await
有效地使每個調用看起來像是同步的,同時不會佔用 JavaScript 的單一處理線程。
異步函數在所有現代瀏覽器(IE 和 Opera Mini 除外)和 Node.js 7.6 中受支持。它們將改變你編寫 JavaScript 的方式,並且可以專門撰寫一篇關於回調、Promise 和異步函數的文章。
Object.values()
、Object.entries()
、Object.getOwnPropertyDescriptors()
、.padStart()
和 .padEnd()
以及尾隨逗號的說明與原文類似,在此不再贅述。
SharedArrayBuffer 和 Atomics
SharedArrayBuffer 對像用於表示固定長度的原始二進制數據緩衝區,可以在 Web Worker 之間共享。 Atomics 對象提供了一種可預測的方式來讀取和寫入由 SharedArrayBuffer 定義的內存位置。
雖然 Chrome 和 Firefox 都實現了這兩個對象,但在 2018 年 1 月由於 Spectre 漏洞而被禁用。
完整的 ECMAScript 2017 語言規範可在 ECMA 國際網站上找到。
ES2017 常見問題解答 (FAQ)
(FAQ 部分與原文類似,在此不再贅述,可以根據需要選擇性保留或改寫。)
以上是ES2017中的新功能:異步功能,改進的對像等等的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

zustand異步操作中的數據更新問題在使用zustand狀態管理庫時,經常會遇到異步操作導致數據更新不及時的問題。 �...
