ECMAScript 2020
เลขรุ่น JavaScript
รุ่น JS ที่เก่าตั้งชื่อด้วยตัวเลข: ES5 (2009) และ ES6 (2015).
ตั้งแต่ปี 2016 ตั้งแต่ต้นตามหลังจากนั้น รุ่นบริหารจะถูกตั้งชื่อตามปี: ECMAScript 2016, 2017, 2018, 2019, ...
คุณสมบัติใหม่ใน ES2020:
- BigInt
- วิธีดำเนินการ matchAll() ของตัวอักษร
- ปฏิสัมพันธ์น้ำตาลที่แยกแยะ (??)
- ปฏิสัมพันธ์โยนโยงที่เลือกได้ (?.)
- ปฏิสัมพันธ์ AND ที่แยกแยะ (&&=)
- ปฏิสัมพันธ์ OR ที่แยกแยะ (||=)
- ปฏิสัมพันธ์น้ำตาลที่แยกแยะ (??=)
- Promise.allSettled()
- นำเข้าไปในระหว่างทันที
คำเตือน
คุณสมบัติเหล่านี้เป็นคุณสมบัติที่ใหม่ของพวกเขา。
บราวเซอร์ที่เก่าอาจจะต้องใช้โค้ดแทน (Polyfill).
BigInt ทาง JavaScript
ตัวแปร BigInt ของ JavaScript ใช้เก็บค่าตัวเลขเต็มที่ใหญ่เกินไปและไม่สามารถแสดงด้วยตัวเลข JavaScript ปกติได้。
ตัวเลขเต็มของ JavaScript สามารถที่จะเก็บค่าที่เท่ากับ 15 ตัวเลขเท่านั้น。
ตัวอย่าง Integer
let x = 999999999999999; let y = 9999999999999999; // ใหญ่เกินไป
ตัวอย่าง BigInt
let x = 9999999999999999; let y = 9999999999999999n;
ถ้าต้องการสร้าง BigInt โปรดใช้ n
ติดตั้งลงท้ายของตัวเลขเต็มหรือเรียก BigInt():
實例
let x = 1234567890123456789012345n; let y = BigInt(1234567890123456789012345);
ประเภทของ JavaScript ของ BigInt คือ "bigint":
實例
let x = BigInt(999999999999999); let type = typeof x;
ตั้งแต่เดือนกันยายน 2020 ตั้งแต่ต้นตามหลังจากนั้น ทุกบราวเซอร์ปัจจุบันเข้าถึง BigInt:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 67 | Edge 79 | Firefox 68 | Safari 14 | Opera 54 |
2018 年 5 月 | 2020 年 1 月 | 2019 年 7 月 | กันยายน 2020 | 2018 年 6 月 |
วิธีการการใช้งาน matchAll() ของ JavaScript ตัวแปรของคำแถลง
在 ES2020 之前,沒有字符串方法方法可用於搜索字符串中所有出現的字符串。
實例
const iterator = text.matchAll("Cats");
如果參數是正則表達式,則必須設定全局標誌 (g
),否則會拋出 TypeError。
實例
const iterator = text.matchAll(/Cats/g);
如果要進行不區分大小寫的搜索,則必須設定不區分大小寫標誌 (i
):
實例
const iterator = text.matchAll(/Cats/gi);
提示:ES2021 引入了字符串方法 replaceAll()。
空值合併運算子(Nullish Coalescing Operator)(?? 運算子)
如果第一個參數不是空值(null
或 undefined
),則 ??
運算子返回第一個參數。
否則返回第二個。
實例
let name = null; let text = "missing"; let result = name ?? text;
自 2020 年 3 月以來,所有現代瀏覽器都支持 nullish 運算子:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 80 | Edge 80 | Firefox 72 | Safari 13.1 | Opera 67 |
2020 年 2 月 | 2020 年 2 月 | 2020 年 1 月 | มีนาคม 2020 | มีนาคม 2020 |
可選鏈運算子(Optional Chaining Operator)(?. 運算子)
如果對象為 undefined
或 null
,則可選鏈運算子返回 undefined
(而不是拋出錯誤)。
實例
const car = {type:"Fiat", model:"500", color:"white"}; let name = car?.name;
自 2020 年 3 月以來,所有現代瀏覽器都支持 ?.=
ตัวเลข:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 80 | Edge 80 | Firefox 74 | Safari 13.1 | Opera 67 |
2020 年 2 月 | 2020 年 2 月 | มีนาคม 2020 | มีนาคม 2020 | มีนาคม 2020 |
ตัวเลข AND การบวกค่า (&&= ตัวเลข)
逻辑 AND 赋值運算子用於兩個值之間。
如果第一個值为 true
แล้วจะจัดสรรค่าที่สอง
逻辑 AND 赋值實例
let x = 100; x &&= 5;
ตั้งแต่กันยายน 2020 ตัวเลขทุกตัวของเบราเซอร์สมัยใหม่ทุกตัวเข้าถึง &&=
ตัวเลข:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
สิงหาคม 2020 | สิงหาคม 2020 | มีนาคม 2020 | กันยายน 2020 | กันยายน 2020 |
逻辑 OR 赋值運算子(||= 運算子)
逻辑 OR 赋值運算子用於兩個值之間。
如果第一個值为 false
แล้วจะจัดสรรค่าที่สอง
逻辑 OR 赋值實例
let x = 10; x ||= 5;
ตั้งแต่กันยายน 2020 ตัวเลขทุกตัวของเบราเซอร์สมัยใหม่ทุกตัวเข้าถึง ||=
ตัวเลข:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
สิงหาคม 2020 | สิงหาคม 2020 | มีนาคม 2020 | กันยายน 2020 | กันยายน 2020 |
ตัวเลขการบวกค่าที่ขาดค่า(??= ตัวเลข)
ตัวเลขการบวกค่าที่ขาดค่า(Nullish Coalescing Assignment Operator)ใช้สำหรับสองค่า
ถ้าค่าแรก undefined
หรือ undefined null
แล้วจะจัดสรรค่าที่สอง
ตัวอย่างการใช้งานการบวกค่าที่ขาดค่า การบวกค่า
let x = 10; x ??= 5;
ตั้งแต่กันยายน 2020 ตัวเลขทุกตัวของเบราเซอร์สมัยใหม่ทุกตัวเข้าถึง ??=
ตัวเลข:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 85 | Edge 85 | Firefox 79 | Safari 14 | Opera 71 |
สิงหาคม 2020 | สิงหาคม 2020 | มีนาคม 2020 | กันยายน 2020 | กันยายน 2020 |