ECMAScript 2019
Nomor versi JavaScript
Versi JS yang lama di beri nama berdasarkan angka: ES5 (2009) dan ES6 (2015).
Dari tahun 2016, versi di beri nama berdasarkan tahun: ECMAScript 2016, 2017, 2018, 2019, ...
Fitur baru di ES2019:
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Pengaturan Catch Opsional
- Array.flat()
- Array.flatMap()
- Array.Sort() yang di修订 ulang
- Revisi JSON.stringify()
- Pemisah yang diizinkan dalam teks string
- Function.toString() yang di修订 ulang
Peringatan
Fitur ini relatif baru.
Browser yang lama mungkin memerlukan kode pengganti (Polyfill)
Metode String JavaScript trimStart()
ES2019 menambahkan metode String untuk JavaScript trimStart()
。
trimStart()
Cara kerja metode sama seperti trim()
Sejenis, namun hanya menghapus spasi di ujung awal string.
Contoh
let text1 = " Hello World! "; let text2 = text1.trimStart();
Sejak bulan Januari 2020, semua browser modern mendukung JavaScript String trimStart():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
April 2018 | Januari 2020 | Juni 2018 | September 2018 | Mei 2018 |
Metode String JavaScript trimEnd()
ES2019 menambahkan trimEnd()
metode string.
trimEnd()
Cara kerja metode sama seperti trim()
Sejenis, namun hanya menghapus spasi di ujung belakang string.
Contoh
let text1 = " Hello World! "; let text2 = text1.trimEnd();
Dari Januari 2020, semua peramban modern mendukung JavaScript String trimEnd():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
April 2018 | Januari 2020 | Juni 2018 | September 2018 | Mei 2018 |
Metode Objek JavaScript fromEntries()
ES2019 menambahkan fromEntries()
Metode objek.
fromEntries()
Metode membuat objek dari pasangan kunci/nilai yang dapat diulang.
Contoh
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Dari Januari 2020, semua peramban modern mendukung JavaScript Object fromEntries():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
Maret 2019 | Januari 2020 | Oktober 2018 | Maret 2019 | April 2019 |
Pengaturan Catch Opsional
Dari ES2019, jika tidak diperlukan, parameter catch dapat dilewati:
Contoh
Sebelum 2019:
try { // code } catch (err) { // code }
Setelah 2019:
try { // code } catch { // code }
Dari Januari 2020, semua peramban modern mendukung penyingkatan catch binding pilihan:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
April 2018 | Januari 2020 | Januari 2018 | Maret 2018 | Mei 2018 |
Metode Array JavaScript flat()
ES2019 menambahkan flat()
Metode array.
flat()
Metode melengkapkan array yang berikut untuk membuat array baru.
Contoh
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Dari Januari 2020, semua peramban modern mendukung JavaScript Array flat():
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
September 2018 | Januari 2020 | September 2018 | September 2018 | September 2018 |
Metode Array JavaScript flatMap()
ES2019 menambahkan flatMap()
Metode array.
flatMap()
Metoden pertama menggambar semua elemen array, lalu membuat array baru melalui penggabungan array.
Contoh
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Metode Array Stabil sort()
ES2019 Revisimetode sort() Array.
Sebelum 2019, spesifikasi mengizinkan algoritma pengurutan yang tidak stabil, seperti QuickSort.
Setelah ES2019, perambat harus menggunakan algoritma pengurutan yang stabil:
Ketika mengurutkan elemen berdasarkan nilai, elemen ini harus mempertahankan posisi relatif mereka terhadap elemen lain yang memiliki nilai yang sama.
Contoh
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 } ];
Dalam contoh di atas, saat diurutkan berdasarkan harga, hasil tidak diizinkan untuk muncul di posisi relatif lain, seperti berikut:
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Revisi JSON.stringify()
ES2019 Revisimetode stringify() JSON.
Sebelum 2019, JSON tidak dapat menggarap karakter yang dienkodifikasi dengan \.
Contoh
let text = JSON.stringify("\u26D4");
Sebelum ES2019, penggunaan JSON.stringify() di kode titik UTF-8 (U+D800 sampai U+DFFF) akan mengembalikan karakter Unicode rusak, seperti ���。
Setelah ini revisi, string yang memiliki kode UTF-8 dapat diubah ke JSON secara aman dengan JSON.stringify() dan dipulihkan ke string asli dengan JSON.parse()。
Simbol Pemisah
Sekarang, di kalimat teks string diperbolehkan untuk menggunakan penanda pemisah baris dan penanda pemisah paragraf (\u2028
dan \u2029
)。
Sebelum 2019, ini dianggap sebagai penanda akhir baris dan mengakibatkan kesalahan eksepsi:
Contoh
// Ini adalah yang berlaku di ES2019: let text = "\u2028";
Perhatian
Sekarang, JavaScript dan JSON memiliki aturan yang sama.
Sebelum ES2019:
text = JSON.parse('"\u2028"') akan diurai menjadi ''。
text = '"\u2028"' akan memberikankesalahan sintaks。
Revisi Function toString()
ES2019 RevisiMetode Function toString()
Metode toString() mengembalikan string yang mewakili kode sumber fungsi.
Mulai 2019, toString() harus mengembalikan kode sumber fungsi, termasuk komentar, spasi, dan detil sintaks.
Sebelum 2019, berbagai peramban mengembalikan variasi fungsi yang berbeda (seperti tanpa komentar dan spasi). Mulai 2019, fungsi harus kembali sepenuhnya menurut cara penulisan yang digunakan.
Contoh
function myFunction(p1, p2) { return p1 * p2; }