JS เวอร์ชันเก่าตั้งชื่อตามตัวเลข: ES5 (2009) และ ES6 (2015)
ตั้งแต่ปี 2559 เป็นต้นไป เวอร์ชันต่างๆ จะตั้งชื่อตามปี: ECMAScript 2016, 2017, 2018, 2019, ...
บทนี้จะแนะนำคุณสมบัติใหม่ใน ECMAScript 2018:
การวนซ้ำแบบอะซิงโครนัส
สัญญาในที่สุด
คุณสมบัติส่วนที่เหลือของวัตถุ
คุณสมบัติ RegExp ใหม่
หน่วยความจำที่ใช้ร่วมกันจาวาสคริปต์
ECMAScript 2018 เพิ่มตัววนซ้ำและตัววนซ้ำแบบอะซิงโครนัส
ด้วยการทำซ้ำแบบอะซิงโครนัส เราสามารถใช้ await
คำหลักใน for/of
วนซ้ำ
for await () {}
การวนซ้ำแบบอะซิงโครนัสของ JavaScript ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนมกราคม 2020:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
ECMAScript 2018 สิ้นสุดการใช้งานออบเจ็กต์ Promise อย่างสมบูรณ์ด้วย Promise.finally
:
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Promise.finally
ได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนพฤศจิกายน 2018:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
ECMAScript 2018 เพิ่มคุณสมบัติส่วนที่เหลือ
สิ่งนี้ช่วยให้เราสามารถทำลายวัตถุและรวบรวมสิ่งที่เหลืออยู่บนวัตถุใหม่:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
คุณสมบัติส่วนที่เหลือของวัตถุได้รับการสนับสนุนในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนมกราคม 2020:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
ECMAScript 2018 เพิ่มฟีเจอร์ RegExp ใหม่ 4 ประการ:
การหลบหนีคุณสมบัติ Unicode (\p{...})
มองหลังการยืนยัน (?<= ) และ (?
ชื่อกลุ่มจับภาพ
s (dotAll) ธง
ฟีเจอร์ RegExp ใหม่ได้รับการรองรับในเบราว์เซอร์สมัยใหม่ทั้งหมดตั้งแต่เดือนมิถุนายน 2020:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |
ใน JavaScript คุณใช้ Web Workers API เพื่อสร้างเธรด
เธรดผู้ปฏิบัติงานใช้เพื่อรันโค้ดในเบื้องหลังเพื่อให้โปรแกรมหลักสามารถดำเนินการต่อไปได้
เธรดผู้ปฏิบัติงานทำงานพร้อมกันกับโปรแกรมหลัก การดำเนินการส่วนต่างๆ พร้อมกัน ของโปรแกรมสามารถประหยัดเวลาได้
หน่วยความจำที่ใช้ร่วมกันเป็นคุณสมบัติที่ช่วยให้เธรด (ส่วนต่าง ๆ ของโปรแกรม) สามารถ เข้าถึงและอัพเดตข้อมูลเดียวกันในหน่วยความจำเดียวกัน
แทนที่จะส่งข้อมูลระหว่างเธรด คุณสามารถส่งผ่านวัตถุ SharedArrayBuffer ได้ ที่ชี้ไปยังหน่วยความจำที่บันทึกข้อมูลไว้
วัตถุ SharedArrayBuffer แสดงถึงบัฟเฟอร์ข้อมูลไบนารีดิบที่มีความยาวคงที่ซึ่งคล้ายกับวัตถุ ArrayBuffer