ECMAScript 2019

  • ບ່ອນໜ້າທີ່ກ່ອນ JS 2018
  • ບ່ອນໜ້າຫຼັງ JS 2020

ວິສາດJSສະຖານະການ

ວິສາດJSເກົ່າຈະຖືກນຳມາຊື່ຫຼັງໂທລະທັດ: ES5 (2009) ແລະ ES6 (2015).

ຕັ້ງແຕ່ປີ 2016 ວິສາດຄະແນນສະຖານະການຈະໄດ້ຖືກນຳມາຊື່ຫຼັງປີ: ECMAScript 2016、2017、2018、2019、...

ການເພີ່ມຫຼັງໃນ ES2019:

ຄໍາເຕືອນ

ການມີຄວາມຫຼາຍຄັນນີ້ທີ່ຫຼາຍຫຼາຍ.

ທຸກການອານຸພາສາທີ່ເກົ່າຈະຕ້ອງມີການຂຽນຂອງການປ່ຽນປັນ (Polyfill)

JavaScript ກົນລະບຽບເວລາຂອງບັນດາວັດຖຸ trimStart()

ES2019 ໄດ້ເພີ່ມພຽງແຕ່ວິທີການ String ສຳລັບ JavaScript trimStart()

trimStart() ວິທີການທີ່ເຮັດວຽກຂອງ trim() ຄືກັນແຕ່ພຽງແຕ່ກຳລັງພັດທະນາຄວາມທີ່ຢູ່ທີ່ສຸດທ້າຍຂອງຖານດັງ.

ຕົວຢ່າງ

let text1 = "     Hello World!     ";
let text2 = text1.trimStart();

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

ຕັ້ງແຕ່ທີ່ມື້ 1 ມັງກອນ 2020 ທຸກການອານຸພາສາທີ່ຫຼິ້ນ JavaScript String trimStart()ທັງໝົດຖືກການສະໜັບສະໜຸນ:

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
ປີ 2018 ເດືອນ 4 ປີ 2020 ເດືອນ 1 2018 年 6 月 ປີ 2018 ເດືອນ 9 ປີ 2018 ເດືອນ 5

JavaScript ກົນລະບຽບເວລາຂອງບັນດາວັດຖຸ trimEnd()

ES2019 ໄດ້ເພີ່ມໃຫ້ JavaScript. trimEnd() ພຽງແຕ່ການຂັດເງົາຄວາມ.

trimEnd() ວິທີການທີ່ເຮັດວຽກຂອງ trim() ຄືກັນແຕ່ພຽງແຕ່ກຳລັງພັດທະນາຄວາມທີ່ຢູ່ທີ່ທ້າຍຂອງຖານດັງ.

ຕົວຢ່າງ

let text1 = "     Hello World!     ";
let text2 = text1.trimEnd();

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

自 2020 年 1 月以来,所有现代浏览器都支持 JavaScript String trimEnd():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 61 Safari 12 Opera 50
ປີ 2018 ເດືອນ 4 ປີ 2020 ເດືອນ 1 2018 年 6 月 ປີ 2018 ເດືອນ 9 ປີ 2018 ເດືອນ 5

JavaScript ກົນລະບຽບວັດຖຸ fromEntries()

ES2019 ໄດ້ເພີ່ມໃຫ້ JavaScript. fromEntries() 对象方法。

fromEntries() 方法从可迭代的键/值对创建对象。

ຕົວຢ່າງ

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]

const myObj = Object.fromEntries(fruits);

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

ຕັ້ງແຕ່ປີ 2020 ເດືອນ 1 ທຸກການຄົ້ນຫາຄອມພິວເຕີບທັງໝົດທີ່ມີຢູ່ສະໜັບສະໜູນ JavaScript Object fromEntries():

Chrome Edge Firefox Safari Opera
Chrome 73 Edge 79 Firefox 63 Safari 12.1 Opera 60
ປີ 2019 ເດືອນ 3 ປີ 2020 ເດືອນ 1 ປີ 2018 ເດືອນ 10 ປີ 2019 ເດືອນ 3 ປີ 2019 ເດືອນ 4

ການຕິດຕໍ່ catch

ຕັ້ງແຕ່ ES2019 ຖ້າບໍ່ມີຄວາມຈຳເປັນຈະສາມາດຫຼີກລົງ catch ຄຳປະກອບ:

ຕົວຢ່າງ

ຕັ້ງແຕ່ປີ 2019 ກ່ອນ

try {
// code
} catch (err) {
// code
}

ຕັ້ງແຕ່ປີ 2019

try {
// code
} catch {
// code
}

ຕັ້ງແຕ່ປີ 2020 ເດືອນ 1 ທຸກການຄົ້ນຫາຄອມພິວເຕີບທັງໝົດທີ່ມີຢູ່ສະໜັບສະໜູນ JavaScript Array flat():

Chrome Edge Firefox Safari Opera
Chrome 66 Edge 79 Firefox 58 Safari 11.1 Opera 53
ປີ 2018 ເດືອນ 4 ປີ 2020 ເດືອນ 1 ປີ 2018 ເດືອນ 1 ປີ 2018 ເດືອນ 3 ປີ 2018 ເດືອນ 5

JavaScript ກົນລະບຽບວັດຖຸ flat()

ES2019 ໄດ້ເພີ່ມໃຫ້ JavaScript. flat() ກົນລະບຽບອາລົບ.

flat() ກົນລະບຽບຈະປະກອບອາລົບໃໝ່ດ້ວຍການຂະຫຍາຍອາລົບທີ່ຈະປະກອບບັນລາ.

ຕົວຢ່າງ

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

ຕັ້ງແຕ່ປີ 2020 ເດືອນ 1 ທຸກການຄົ້ນຫາຄອມພິວເຕີບທັງໝົດທີ່ມີຢູ່ສະໜັບສະໜູນ JavaScript Array flat():

Chrome Edge Firefox Safari Opera
Chrome 69 Edge 79 Firefox 62 Safari 12 Opera 56
ປີ 2018 ເດືອນ 9 ປີ 2020 ເດືອນ 1 ປີ 2018 ເດືອນ 9 ປີ 2018 ເດືອນ 9 ປີ 2018 ເດືອນ 9

JavaScript ກົນລະບຽບວັດຖຸ flatMap()

ES2019 ໄດ້ເພີ່ມໃຫ້ JavaScript. flatMap() ກົນລະບຽບອາລົບ.

flatMap() ກົນລະບຽບວ່າຫຼັກສັດທັງໝົດຂອງອາລົບກໍ່ມີຄວາມຄິດວ່າຈະປະກອບອາລົບໃໝ່ດ້ວຍການຂະຫຍາຍອາລົບ.

ຕົວຢ່າງ

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap((x) => x * 2);

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

JavaScript ກົນລະບຽບວັດຖຸ sort()

ES2019 ການດັດແກ້了 Array sort() 方法。

在 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 ການດັດແກ້ຂອງການປ່ຽນຫຼາຍ JSON.stringify()

ກ່ອນ 2019 JSON ບໍ່ສາມາດປ່ຽນຄຳເວົ້າທີ່ໃຊ້ການກັບຄືນ \ ສຳລັບການປ່ຽນຫຼາຍໃຫ້ຄືນຢ່າງປອດໄພ。

ຕົວຢ່າງ

let text = JSON.stringify("\u26D4");

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

ກ່ອນ ES2019,ການໃຊ້ JSON.stringify() ໃນວັດສະວັດ UTF-8 (U+D800 ຫາ U+DFFF) ຈະຮັບການກັບຄືນຄຳມົນລະຍຸດ Unicode ທີ່ເສຍຫາຍ,ເຊັ່ນ ���。

ຫຼັງຈາກການສ້າງປະຕິວັດນີ້,ກະຕຸ້ມຄຳເວົ້າທີ່ມີວັດສະວັດ UTF-8 ຈະສາມາດປ່ຽນຫຼາຍໃຫ້ຄືນຢ່າງປອດໄພທີ່ 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 ວັດຖຸ toString() ຕ້ອງກັບຄືນກັບວັດຖຸຂອງບັນດາວັດຖຸ, ລວມທັງຄຳໝາຍຄວາມສັນຍາ, ຈົນນະພາບແລະປະສົມຄະຕິ.

ກ່ອນ 2019, ບັນດາຈັກພາບທີ່ແຕກຕ່າງກັນຈະກັບການກວດກາບັນດາວັດຖຸ (ວ່າບໍ່ມີຄຳໝາຍຄວາມສັນຍາແລະຈົນນະພາບ). ຈາກປີ 2019 ຂະນະນີ້ວັດຖຸຈະຖືກກັບກັບທຳມະດາວັດຖຸທີ່ຂຽນ.

ຕົວຢ່າງ

function myFunction(p1, p2) {
  return p1 * p2;
}

ການທົດລອງດ້ວຍຕົວມືຂອງທ່ານເອງ

  • ບ່ອນໜ້າທີ່ກ່ອນ JS 2018
  • ບ່ອນໜ້າຫຼັງ JS 2020