ECMAScript 2019
ตัวแปรภาษา JavaScript
ตัวแปรภาษา JavaScript ตัวเก่าได้ถูกตั้งชื่อด้วยตัวเลข เช่น ES5 (2009) และ ES6 (2015)
ตั้งแต่ปี 2016 มาตัวแปรภาษา ECMAScript ได้ถูกตั้งชื่อตามปี เช่น ECMAScript 2016, 2017, 2018, 2019, ...
คุณสมบัติใหม่ใน ES2019
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- ѡ catch 绑定
- Array.flat()
- Array.flatMap()
- Array.Sort() ที่ถูกปรับปรุง
- ¹ JSON.stringify()
- ตัวแปรภาษา JavaScript ที่อนุญาตให้แบ่งข้อความ
- Function.toString() ที่ถูกปรับปรุง
คำเตือน
คุณสมบัติเหล่านี้นิยมใช้เร็วขึ้น
ตัวแปรภาษา JavaScript ที่เก่าอาจจะต้องใช้โค้ดที่เปลี่ยนแปลง (Polyfill)
JavaScript ַ÷ trimStart()
String มีวิธีใหม่ที่เพิ่มขึ้นโดย ES2019 trimStart()
。
trimStart()
วิธีที่ทำงานของวิธี trim()
คล้ายกัน แต่เฉพาะการลบช่องว่างที่ด้านหน้าของข้อความ
ʵ
let text1 = " Hello World! "; let text2 = text1.trimStart();
ตั้งแต่เดือนมกราคม 2020 ตัวแปรภาษา JavaScript String trimStart() ได้รับการสนับสนุนโดยทุกบราวเซอร์ที่ใช้งานแน่นอน
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
เมษายน 2018 | มกราคม 2020 | มิถุนายน 2018 | กันยายน 2018 | พฤษภาคม 2018 |
JavaScript ַ÷ trimEnd()
ES2019 ได้เพิ่มความสามารถให้ JavaScript trimEnd()
วิธีของตัวแปรภาษา JavaScript
trimEnd()
วิธีที่ทำงานของวิธี trim()
คล้ายกัน แต่เฉพาะการลบช่องว่างที่ด้านท้ายของข้อความ
ʵ
let text1 = " Hello World! "; let text2 = text1.trimEnd();
ตั้งแต่มกราคม 2020 ทุกเครื่องเบราเซอร์ที่สมัยใหม่ต่างให้การสนับสนุน JavaScript String trimEnd()
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
เมษายน 2018 | มกราคม 2020 | มิถุนายน 2018 | กันยายน 2018 | พฤษภาคม 2018 |
JavaScript fromEntries()
ES2019 ได้เพิ่มความสามารถให้ JavaScript fromEntries()
วิธีแอ็็กซ์โอเบจ
fromEntries()
วิธีนี้จะทำให้เกิดตัวแปรที่เป็นตัวเลือกตัวชาติที่มีจากตัวเลือกตัวชาติ/ค่า
ʵ
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
ตั้งแต่มกราคม 2020 ทุกเครื่องเบราเซอร์ที่สมัยใหม่ต่างให้การสนับสนุน JavaScript Object fromEntries()
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
มีนาคม 2019 | มกราคม 2020 | ตุลาคม 2018 | มีนาคม 2019 | เมษายน 2019 |
ѡ catch 绑定
จาก ES2019 ต้นไป ถ้าไม่จำเป็น คุณสามารถละเลยประกาศตัวแปรที่เป็นค่าใน catch
ʵ
ก่อน 2019
try { // code } // code }
หลัง 2019
try { // code } // code }
ตั้งแต่มกราคม 2020 ทุกเครื่องเบราเซอร์ที่สมัยใหม่ต่างให้การสนับสนุนการผูกตัวประกัน optional catch
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
เมษายน 2018 | มกราคม 2020 | มกราคม 2018 | มีนาคม 2018 | พฤษภาคม 2018 |
JavaScript б÷ flat()
ES2019 ได้เพิ่มความสามารถให้ JavaScript flat()
วิธีแอร์เรย์
flat()
วิธีนี้จะทำให้เกิดแอร์เรย์ใหม่ด้วยการแบ่งแยกแอร์เรย์ที่ปรึกษา
ʵ
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
ตั้งแต่มกราคม 2020 ทุกเครื่องเบราเซอร์ที่สมัยใหม่ต่างให้การสนับสนุน JavaScript Array flat()
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
กันยายน 2018 | มกราคม 2020 | กันยายน 2018 | กันยายน 2018 | กันยายน 2018 |
JavaScript б÷ flatMap()
ES2019 ได้เพิ่มความสามารถให้ JavaScript flatMap()
วิธีแอร์เรย์
flatMap()
วิธีนี้จะมาด้วยการแปลงหลักฐานทุกอันของแอร์เรย์ แล้วทำให้เกิดแอร์เรย์ใหม่ด้วยการแบ่งแยกแอร์เรย์
ʵ
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Ķб÷ sort()
ES2019 ¹ของฟังก์ชัน sort() ของ Array
ก่อนปี 2019 นี้ มาตราฐานอนุญาตให้ใช้อัลกอริทึมการเรียงลำดับที่ไม่มั่นคง เช่น QuickSort
หลังจาก ES2019 ต้องใช้อัลกอริทึมการเรียงลำดับที่มั่นคงของเบราวเซอร์:
เมื่อเรียงลำดับองค์ประกอบตามค่าเดียวกัน องค์ประกอบนี้จะต้องมั่นคงตำแหน่งของพวกเขาต่อองค์ประกอบที่มีค่าเดียวกัน
ʵ
const myArr = [ {name:"X00",price:100 }, {name:"X01",price:100 }, {name:"X02",price:100 }, {name:"X03",price:100 }, {name:"X04",price:110 }, {name:"X05",price:110 }, {name:"X06",price:110 }, {name:"X07",price:110 } ];
ในตัวอย่างดังกล่าว ขณะที่เรียงตามราคา ผลลัพธ์ไม่อนุญาตให้ชื่อที่อยู่ในตำแหน่งที่ต่างกัน อย่างเช่น
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
¹ JSON.stringify()
ES2019 ¹ของฟังก์ชัน stringify() ของ JSON
ก่อนปี 2019 นี้ JSON ไม่สามารถแปลงตัวอักษรที่ใช้การเข้ารหัส \ ได้
ʵ
let text = JSON.stringify("\u26D4");
ก่อน ES2019 ในรหัส UTF-8 ที่อยู่ที่ (U+D800 ถึง U+DFFF) การใช้ JSON.stringify() จะกลับมาเป็นอักษร Unicode ที่เสียหาย เช่น ���
หลังจากการปรับปรุงครั้งนี้ ข้อความที่มีรหัส UTF-8 จะสามารถแปลงเป็น JSON โดยมั่นใจด้วย JSON.stringify() และกลับมาเป็นข้อความตัวอักษรต้นฉบับด้วย JSON.parse()
ϡ
ตอนนี้ สามารถใช้สัญญาณแยกบรรทัดและสัญญาณแยกย่องในข้อความตัวอักษร (\u2028
และ \u2029
)。
ก่อนปี 2019 นี้ สิ่งนี้ถูกมองว่าเป็นสัญญาณจบบรรทัดและนำไปสู่ข้อผิดพลาด
ʵ
// นี่เป็นสิ่งที่ถูกต้องใน ES2019: let text = "\u2028";
จำเป็นต้องระวัง
ตอนนี้ JavaScript และ JSON มีกฎระเบียบเดียวกัน
ก่อน ES2019:
text = JSON.parse('"\u2028"') จะแปลงเป็น ''。
text = '"\u2028"' จะแสดงความผิดพลาดในการใช้ภาษาบวกแบบเรียง。
¹ Function toString()
ES2019 ¹Function toString() ÷
toString() ÷ظʾʽı
2019 ʼʽȫݸд
2019 ǰΪʲôǷһЩɲʽ
ʵ
function myFunction(p1, p2) { return p1 * p2; }