ECMAScript 2022
Nomor versi JavaScript
Versi ECMAScript lama dinamai dengan angka: ES5 dan ES6.
Dari tahun 2016, versi dinamai dengan tahun: ES2016, 2018, 2020, 2022.
Fitur baru ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Pengumuman field kelas
- Metode dan field privat
Peringatan:
Fitur ini relatif baru.
Perambatan lama browser mungkin memerlukan kode pengganti (Polyfill).
JavaScript Array at()
ES2022 memperkenalkan metode array at()
:
Contoh 1
Mendapatkan elemen ketiga dari array fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
Contoh 2
Mendapatkan elemen ketiga dari array fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
Metode ini mengembalikan elemen yang ditentukan indeks dari array.
at()
Metode dengan []
Hasil yang dihasilkan sama.
Mulai bulan Maret 2022, semua browser modern mendukung: at()
Metode:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
April 2021 | Juli 2021 | Juli 2021 | Maret 2022 | Agustus 2021 |
Perhatian:
Banyak bahasa memungkinkan penggunaan indeks negatif (seperti [-1]
) Mengakses elemen akhir objek/array/string.
Ini tidak mungkin di JavaScript karena []
Digunakan untuk mengakses array dan objek. obj[-1] mengacu pada nilai kunci -1, bukan properti terakhir objek.
at()
Metode ini diperkenalkan di ES2022 untuk memecahkan masalah ini.
JavaScript String at()
ES2022 memperkenalkan metode string at()
:
Contoh 1
Mendapatkan huruf ketiga string name:
const name = "W3Schools"; let letter = name.at(2);
Contoh 2
Mendapatkan huruf ketiga string name:
const name = "W3Schools"; let letter = name[2];
at()
Metode mengembalikan karakter yang ditentukan indeksnya dari string.
at()
Metode dengan []
Hasil yang dihasilkan sama.
Mulai bulan Maret 2022, semua browser modern mendukung: at()
Metode:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
April 2021 | Juli 2021 | Juli 2021 | Maret 2022 | Agustus 2021 |
modifikator d RegExp
ES2022 menambahkan /d
Modifikator, digunakan untuk menunjukkan awal dan akhir pengecokan.
Instansi
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
Modifikator RegExp digunakan untuk menentukan pengecokan yang tak membedakan huruf besar dan kecil, serta pencarian global lainnya:
Modifikator | Deskripsi | Coba sendiri |
---|---|---|
g | Melakukan pengecokan global (mencari semua). | Coba sendiri |
i | Melakukan pengecokan yang tak membedakan huruf besar dan kecil. | Coba sendiri |
d | Melakukan pengecokan substring (diperkenalkan di ES2022). | Coba sendiri |
m | Melakukan pengecokan multi-baris. | Coba sendiri |
Object.hasOwn()
ES2022 menyediakan metode yang aman untuk memeriksa apakah properti adalah properti milik objek.
Object.hasOwn()
seperti Object.prototype.hasOwnProperty
tetapi mendukung semua tipe objek.
Instansi
Object.hasOwn(myObject, age)
Penyebab Kesalahan
ES2022 mengijinkan untuk menentukan penyebab utama kesalahan melalui error.cause.
Instansi
connectData(); catch (err) { } throw new Error("Gagal terhubung.", { cause: err }); }
await import JavaScript
Modul JavaScript sekarang dapat menunggu sumber yang perlu diimpor sebelum menjalankan:
import {myData} from './myData.js'; const data = await myData();
Deklarasi field class JavaScript
class Hello { counter = 0; // field class } const myClass = new Hello(); let x = myClass.counter;
Mulai bulan April 2021, deklarasi field class didukung di semua browser modern:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
January 2019 | Januari 2020 | September 2019 | April 2021 | Januari 2020 |
Metode dan field pribadi JavaScript
class Hello { #counter = 0; // Field Pribadi #myMethod() {} // Metode Pribadi } const myClass = new Hello(); let x = myClass.#counter; // Kesalahan myClass.#myMethod(); // Kesalahan
Dari Juni 2021, metode dan field pribadi didukung di semua browser modern:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
April 2019 | Januari 2020 | Juni 2021 | April 2021 | Juni 2019 |