Spesifikasi ECMAScript 2020 untuk JavaScript diluluskan

ECMAScript 2020, versi akhir dari spesifikasi rasmi yang mendasari JavaScript, secara rasmi diluluskan oleh ECMA International, dan jawatankuasa teknikal ECMA yang mengawasi spesifikasi tersebut, pada 16 Jun. 

ECMAScript 2020 memperkenalkan pelbagai ciri mulai dari kemudahan baru  import() untuk memuat modul ke BigInt jenis baru  untuk bekerja dengan bilangan bulat ketepatan sewenang-wenang. 

Ciri khas yang diperkenalkan oleh ECMAScript 2020 meliputi:

  • import()Modul "seperti fungsi" memuat sintaks untuk mengimport modul secara tidak segerak dengan penentu dinamik. Cadangan itu menambah import(specifier)bentuk sintaksis, yang bertindak dalam pelbagai cara seperti fungsi. Ia mengembalikan janji untuk objek ruang nama modul yang diminta, dibuat setelah mengambil, memberi contoh, dan menilai kebergantungan modul, bersama dengan modul itu sendiri. Surat  specifierwasiat akan ditafsirkan dengan cara yang sama seperti dalam importdeklarasi. Walaupun specifiermerupakan rentetan, tidak semestinya string harfiah; oleh itu, kod seperti import(`./language-packs/${navigator.language}.js`)akan berfungsi. Ini tidak mungkin berlaku dengan importpernyataan biasa . Dengan rancangan itu,import() diusulkan untuk berfungsi di kedua modul dan skrip, memberikan kod skrip sebagai titik masuk asinkron yang mudah ke dunia modul dan memungkinkannya untuk mulai menjalankan kod modul.
  • BigInt,nombor primitif baru untuk bekerja dengan bilangan bulat ketepatan sewenang-wenang. BigIntdapat mewakili nombor yang lebih besar daripada dua hingga ke-53, JavaScript nombor terbesar dapat mewakili dengan pasti dengan Numberprimitif. A BigIntdibuat dengan melampirkan npada akhir bilangan bulat atau dengan memanggil pembina.
  • The matchAllkaedah untuk tali, untuk menghasilkan iterator untuk semua objek dipadankan dihasilkan oleh ungkapan biasa global. Alasan di sebalik cadangan ini adalah bahawa jika pembangun mempunyai rentetan dan ekspresi tetap melekit atau global dengan banyak kumpulan tangkap, pembangun mungkin ingin melakukan iterasi melalui semua pertandingan, yang saat ini ada beberapa pilihan tetapi dengan batasan. String#matchAll menangani masalah dengan memberikan akses kepada semua kumpulan penangkap dan tidak secara mutasi mengubah objek ekspresi biasa yang dimaksud.
  • Promise.allSettled, penggabungan Janji baru yang tidak litar pintas. Ini mengembalikan janji yang ditunaikan dengan pelbagai snapshot keadaan janji, tetapi hanya setelah janji-janji asalnya selesai, yakni telah dipenuhi atau ditolak.
  • globalThis, menyediakan cara sejagat untuk mengakses nilai global this.
  • export * as ns from ‘module’Sintaks khusus untuk digunakan dalam modul.
  • Peningkatan piawaian for-inpesanan pencacahan, yang sebahagiannya menentukan pesanan penghitungan dalam JavaScript.
  • import.meta,objek yang dihuni host dalam Modul yang boleh mengandungi maklumat kontekstual. Ini berfungsi sebagai metaproperty JavaScript, menyimpan metadata khusus host mengenai modul semasa.
  • Nullish coalescing, pengendali pemilihan nilai untuk pengendalian kes yang lebih baik yang melibatkan akses harta benda. Ini adalah ciri sintaks untuk meningkatkan bekerja dengan nilai "nullish" ( nullatau tidak ditentukan).
  • Rantai pilihan, pengendali permintaan harta tanah dan fungsi yang akan melakukan pintasan sekiranya nilai untuk mengakses / memohon tidak ada. 

Kemas kini terakhir untuk ECMAScript, ECMAScript 2019, menampilkan keupayaan seperti prototype.flatMap untuk array bersarang.