EMMAScript 2018
หลักการตั้งชื่อ JavaScript เริ่มต้นด้วย ES1, ES2, ES3, ES5 และ ES6
แต่ ECMAScript 2016 และ 2017 ไม่ได้เรียกว่า ES7 และ ES8
ตั้งแต่ปี 2016 มีการตั้งชื่อเวอร์ชันใหม่ตามปี (ECMAScript 2016 / 2017 / 2018)
คุณลักษณะใหม่ใน ECMAScript 2018
บทนี้จะแนะนำคุณลักษณะใหม่ใน ECMAScript 2018:
JavaScript การวนซ้ำแบบอะซิงโครนัส
ECMAScript 2018 เพิ่มตัววนซ้ำแบบอะซิงโครนัสและแบบวนซ้ำได้
ด้วย iterables แบบอะซิงโครนัส เราสามารถใช้await
คีย์เวิร์ดในfor/of
ลูปได้
ตัวอย่าง
for await () {}
Firefox และ Safari เป็นเบราว์เซอร์แรกที่รองรับ JavaScript asynchronous iteration:
Chrome 63 | Edge 79 | Firefox 57 | Safari 11 | Opera 50 |
Dec 2017 | Jan 2020 | Nov 2017 | Sep 2017 | Jan 2018 |
JavaScript Promise.finally
ECMAScript 2018 เสร็จสิ้นการใช้งาน Promise object อย่างเต็มรูปแบบด้วยPromise.finally
:
ตัวอย่าง
let myPromise = new Promise();
myPromise.then();
myPromise.catch();
myPromise.finally();
Chrome และ Firefox เป็นเบราว์เซอร์แรกที่รองรับPromise.finally
:
Chrome 63 | Edge 18 | Firefox 58 | Safari 11.1 | Opera 50 |
Dec 2017 | Nov 2018 | Jan 2018 | Mar 2018 | Jan 2018 |
คุณสมบัติการพักวัตถุ JavaScript
ECMAScript 2018 เพิ่มคุณสมบัติการพักผ่อน
สิ่งนี้ทำให้เราสามารถทำลายวัตถุและรวบรวมสิ่งที่เหลืออยู่บนวัตถุใหม่:
ตัวอย่าง
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // 1
y; // 2
z; // { a: 3, b: 4 }
Chrome, Firefox และ Opera เป็นเบราว์เซอร์แรกที่รองรับคุณสมบัติการพักวัตถุ:
Chrome 60 | Edge 79 | Firefox 55 | Safari 11.1 | Opera 47 |
Jul 2017 | Jan 2020 | Aug 2017 | Mar 2018 | Aug 2017 |
คุณสมบัติ JavaScript RegExp ใหม่
ECMAScript 2018 เพิ่มคุณสมบัติ RegExp ใหม่ 4 อย่าง:
- Unicode คุณสมบัติ Escapes (\p{...})
- Lookbehind Assertions (?<= ) และ (?<! )
- ชื่อแคปเจอร์กรุ๊ป
- s (dotAll) แฟล็ก
Chrome และ Firefox เป็นเบราว์เซอร์แรกที่รองรับคุณสมบัติ RegExp ใหม่ทั้งหมด:
Chrome 64 | Edge 79 | Firefox 78 | Safari 12 | Opera 51 |
Jan 2018 | Jan 2020 | Jun 2020 | Sep 2018 | Feb 2018 |