ECMAScript 2019

ตัวแปรภาษา JavaScript

ตัวแปรภาษา JavaScript ตัวเก่าได้ถูกตั้งชื่อด้วยตัวเลข เช่น ES5 (2009) และ ES6 (2015)

ตั้งแต่ปี 2016 มาตัวแปรภาษา ECMAScript ได้ถูกตั้งชื่อตามปี เช่น ECMAScript 2016, 2017, 2018, 2019, ...

คุณสมบัติใหม่ใน ES2019

คำเตือน

คุณสมบัติเหล่านี้นิยมใช้เร็วขึ้น

ตัวแปรภาษา 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;
}

ʵ