Ada prosedur standar untuk versi terbaru
Javascript dan ada seluruh komite di belakangnya. Dalam artikel ini, saya akan berbicara tentang siapa yang membuat keputusan tentang spesifikasi baru, apa prosedur untuk itu, dan apa yang baru di
ES2019 .

Spesifikasi bahasa yang mengontrol JavaScript disebut
ECMAScript . Ada kelompok yang disebut Komite Teknis
39 [TC39] yang
meninjau setiap spesifikasi sebelum diadopsi.
Setiap perubahan terjadi secara bertahap:
- Tahap 0: Gagasan
- Tahap 1: Penawaran
- Tahap 2: Draf
- Tahap 3: Kandidat
- Tahap 4: Penyelesaian / Persetujuan
Fungsi yang mencapai tahap 4 kemungkinan akan menjadi bagian dari spesifikasi bahasa.
Pertimbangkan apa yang ditambahkan ke spesifikasi sesuai dengan ES2019.
Array.prototype. {Flat, flatMap}
Array.prototype.flat () memungkinkan Anda untuk secara halus
memperhalus array ke kedalaman tertentu dan mengembalikan array baru.
Sintaks:
Array.prototype.flat (mendalam)mendalam - nilai default adalah 1, gunakan
Infinity untuk memuluskan semua array bersarang.
const numbers = [1, 2, [3, 4, [5, 6]]]; // Considers default depth of 1 numbers.flat(); > [1, 2, 3, 4, [5, 6]] // With depth of 2 numbers.flat(2); > [1, 2, 3, 4, 5, 6] // Executes two flat operations numbers.flat().flat(); > [1, 2, 3, 4, 5, 6] // Flattens recursively until the array contains no nested arrays numbers.flat(Infinity) > [1, 2, 3, 4, 5, 6]
Array.prototype.flatMap () memetakan setiap elemen menggunakan fungsi pemetaan dan menyelaraskan hasilnya ke array baru. Ini identik dengan operasi
peta , diikuti oleh kedalaman
datar 1.
Sintaks:
Array.prototype.flatMap (panggilan balik)callback:
fungsi yang menghasilkan elemen array baru.
const numbers = [1, 2, 3]; numbers.map(x => [x * 2]); > [[2], [4], [6]] numbers.flatMap(x => [x * 2]); > [2, 4, 6]
Object.fromEntries
Object.fromEntries melakukan kebalikan dari Object.entries. Itu mengubah daftar pasangan kunci-nilai menjadi objek.
Sintaks:
Object.fromEntries (iterable)iterasi: Iterasi sebagai objek
Array atau
Peta yang mengimplementasikan
protokol iterable .
const records = [['name','Mathew'], ['age', 32]]; const obj = Object.fromEntries(records); > { name: 'Mathew', age: 32} Object.entries(obj); > [['name','Mathew'], ['age', 32]];
String.prototype. {TrimStart, trimEnd}
trimStart () menghapus spasi di awal baris, dan
trimEnd () menghapus spasi di akhir baris.
const greeting = ` Hello Javascript! `; greeting.length; > 19 greeting = greeting.trimStart(); > 'Hello Javascript! ' greeting.length; > 18 greeting = 'Hello World! '; greeting.length; > 15 greeting = greeting.trimEnd(); > 'Hello World!' greeting.length; > 12
Binding Tangkap Opsional
Sebelum spesifikasi baru, itu harus memiliki variabel pengecualian terikat ke pernyataan
penangkapan . ES2019 menjadikannya opsional.
// Before try { ... } catch(error) { ... } // After try { ... } catch { ... }
Fitur ini berguna jika Anda ingin mengabaikan kesalahan sepenuhnya.
Praktik terbaik adalah mempertimbangkan penanganan kesalahan.Ada kalanya Anda mengetahui kemungkinan kesalahan yang mungkin berhasil saat melakukan operasi. Dan Anda bisa mengabaikan penanganan tangkapan.
JSON â ECMAScript
Karakter pemisah garis (U + 2028) dan karakter pemisah paragraf (U + 2029) sekarang diizinkan dalam string literal. Sebelumnya, mereka dianggap sebagai terminator string dan
melemparkan pengecualian
SyntaxError .
// Produces invalid string before ES2019 eval('"\u2028"'); // Valid in ES2019 eval('"\u2028"');
JSON.stringify terbentuk dengan baik
Alih-alih poin kode pengganti tidak berpasangan yang mengarah ke unit kode
UTF-16 tunggal, ES10 mewakili mereka menggunakan urutan pelarian JSON.
JSON.stringify('\uD800'); > '" "' JSON.stringify('\uD800'); > '"\\ud800"'
Function.prototype.toString
.toString () sekarang mengembalikan potongan kode sumber yang tepat, termasuk spasi dan komentar.
function /* a comment */ foo () {} // Previously: foo.toString(); > 'function foo() {}' ^ no comment ^ no space // Now: foo.toString(); > 'function /* comment */ foo () {}'
Symbol.prototype.description
Properti baca-saja yang mengembalikan deskripsi opsional objek
simbol :
Symbol('desc').toString(); > "Symbol(desc)" Symbol('desc').description; > "desc" Symbol('').description; > "" Symbol().description; > undefined
Kesimpulan
Ada banyak hal menarik lainnya, seperti metode dan bidang statis dan pribadi di kelas, Legacy RegEx, dll. Penting bagi pengembang untuk memantau munculnya teknologi baru, meningkatkan yang lama dan menggunakannya dalam pekerjaan.
Ini akan berguna untuk membaca versi sebelumnya:
ES2015 ES2016 ES2017 ES2018