ECMAScript 2019
ວິສາດJSສະຖານະການ
ວິສາດJSເກົ່າຈະຖືກນຳມາຊື່ຫຼັງໂທລະທັດ: ES5 (2009) ແລະ ES6 (2015).
ຕັ້ງແຕ່ປີ 2016 ວິສາດຄະແນນສະຖານະການຈະໄດ້ຖືກນຳມາຊື່ຫຼັງປີ: ECMAScript 2016、2017、2018、2019、...
ການເພີ່ມຫຼັງໃນ ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- ການຕິດຕໍ່ catch
- Array.flat()
- Array.flatMap()
- Array.Sort()ທີ່ຖືກຂຽນອອກມາໃໝ່
- JSON.stringify() ທີ່ຖືກກວດກາຄືນຄືນ
- ຄວາມຈຳນວນທີ່ອະນຸຍາດຂອງຄວາມທີ່ບັນທຶກສະແດງຄວາມ.
- Function.toString()ທີ່ຖືກຂຽນອອກມາໃໝ່
ຄໍາເຕືອນ
ການມີຄວາມຫຼາຍຄັນນີ້ທີ່ຫຼາຍຫຼາຍ.
ທຸກການອານຸພາສາທີ່ເກົ່າຈະຕ້ອງມີການຂຽນຂອງການປ່ຽນປັນ (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; }