Chrome, Firefox, dan Safari masing-masing memakai engine yang berbeda, ditulis oleh tim yang berbeda pula. Namun kode 0.1 + 0.2 dari chapter sebelumnya menghasilkan angka yang persis sama di ketiganya. Kebetulan? Bukan — ada kontrak tertulis yang wajib dipatuhi semua engine: spesifikasi ECMA-262. Tanpa kontrak itu, kita akan menulis cabang kode khusus untuk tiap browser, seperti masa-masa awal web ketika halaman sering hanya tampil benar di satu aplikasi.
Standar juga menjadi forum resmi bagi perubahan bahasa. Fitur baru tidak muncul begitu saja dari satu perusahaan; fitur tersebut diusulkan, dibahas, diuji, lalu disetujui lewat proses yang terbuka. Chapter ini memperkenalkan para pemainnya — Ecma International, komite TC39, WHATWG, dan W3C — lalu menutup section ini dengan mencicipi fitur ES2025 langsung di runtime kita.
ECMAScript: Nama Spesifikasi, Bukan Bahasa Lain #
JavaScript dibuat pada 1995, dan setahun kemudian Netscape mengirimkannya ke Ecma International — badan standardisasi internasional — agar bahasa ini punya acuan yang berlaku untuk semua pihak. Edisi pertama spesifikasi terbit pada Juni 1997 dengan nama ECMAScript, berdasarkan dokumen bernomor ECMA-262. Nama netral itu dipilih karena “JavaScript” saat itu merupakan merek dagang pihak lain, sehingga tidak boleh dijadikan nama sebuah standar.
Sejak itu, hubungan tiga istilah berikut bisa kita pegang:
- ECMAScript adalah spesifikasi — dokumen aturan tertulis tentang perilaku bahasa.
- JavaScript adalah nama populer untuk bahasa yang mengikuti spesifikasi tersebut.
- Engine (V8, SpiderMonkey, JavaScriptCore) adalah program yang mengimplementasikan spesifikasi itu.
Analogi yang membantu: ECMAScript adalah resep, JavaScript adalah masakannya, dan engine adalah juru masaknya. Batas analogi ini perlu diingat — dalam praktik sehari-hari, istilah “JavaScript” dan “ECMAScript” sering dipakai bergantian untuk merujuk hal yang sama, dan itu wajar.
Anggapan yang sering muncul di kalangan pemula: ECMAScript adalah bahasa pemrograman lain yang harus dipelajari terpisah. Tidak — ECMAScript adalah nama spesifikasi untuk bahasa yang sedang kita pelajari ini. Ketika membaca “fitur ES2025”, yang dimaksud adalah fitur JavaScript dari edisi spesifikasi tahun 2025.
TC39 dan Rilis Tahunan #
Evolusi bahasa diurus komite bernama TC39 di bawah Ecma International. Anggotanya adalah perwakilan perusahaan browser dan komunitas pengembang. Sebelum 2015, spesifikasi jarang diperbarui — edisi besar terakhir sebelum itu adalah ES3 (1999) dan ES5 (2009). Jeda panjang tersebut membuat fitur menumpuk tanpa rumah yang jelas.
ES2015 (sering disebut ES6) menutup jeda itu sekaligus menjadi tonggak modernisasi terbesar: let dan const, class, module, arrow function, dan Promise masuk dalam satu edisi. ES2015 juga memulai ritme baru yang berlaku sampai sekarang: satu edisi spesifikasi dirilis setiap tahun, sehingga fitur baru datang dalam porsi kecil yang mudah dicerna.
Setiap usulan fitur menempuh tahapan bernomor yang terdefinisi rapi:
| Tahap | Nama | Arti |
|---|---|---|
| 0 | Strawman | Gagasan awal; boleh diajukan siapa saja kepada TC39 |
| 1 | Proposal | Kasus penggunaan dan bentuk API diusulkan secara serius |
| 2 | Draft | Teks spesifikasi awal ditulis dan disepakati |
| 3 | Candidate | Desain dianggap selesai; menunggu umpan balik dari implementasi nyata |
| 4 | Finished | Fitur teruji dan masuk spesifikasi edisi tahun berjalan |
Fitur yang mencapai Tahap 4 ikut dalam draft edisi tahunan, lalu disahkan Majelis Umum Ecma. ES2025 disetujui pada 25 Juni 2025 dan membawa, antara lain: iterator helpers, Set methods, Promise.try, dan RegExp.escape. Kita akan menguji beberapa di antaranya di akhir chapter ini.
Organisasi di Sekitar Bahasa #
Spesifikasi bahasa inti saja tidak cukup untuk membangun web. HTML, DOM, dan jaringan juga membutuhkan aturan main agar konsisten antar browser. Peta organisasinya seperti ini:
| Organisasi | Wilayah kerja | Contoh keluaran |
|---|---|---|
| Ecma International (komite TC39) | Bahasa inti JavaScript | ECMA-262 (ECMAScript) |
| WHATWG | Dokumen dan jaringan web | HTML, DOM, fetch, URL |
| W3C | Standar web lainnya | CSS, pedoman aksesibilitas |
Sementara itu, Node.js — runtime yang kita bahas pada chapter sebelumnya — dikembangkan di bawah payung OpenJS Foundation. Runtime tersebut mengimplementasikan ECMAScript untuk bahasa intinya, tetapi API sistem operasinya dikelola di luar spesifikasi bahasa.
Contoh: Mengecek Fitur Baru di Runtime #
Karena fitur datang setiap tahun, kita membutuhkan cara aman bertanya: “apakah runtime tempat kode saya berjalan sudah mendukung fitur ini?” Idiomnya disebut feature detection: periksa ketersediaan fitur sebelum memakainya. Operator typeof mengembalikan nama tipe sebuah nilai sebagai teks — "function" berarti tersedia, sedangkan "undefined" berarti belum ada. Program berikut mengecek tiga fitur ES2025:
// cek-fitur.js — memeriksa fitur ES2025 pada runtime yang dipakai
console.log(`Promise.try : ${typeof Promise.try}`);
console.log(`RegExp.escape : ${typeof RegExp.escape}`);
console.log(`Iterator : ${typeof Iterator}`);Output yang Dihasilkan:
Promise.try : function
RegExp.escape : function
Iterator : functionMari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 2 (
typeof Promise.try):Promiseadalah object bawaan bahasa, danPromise.tryadalah method baru ES2025 untuk memulai rantai operasi yang bisa gagal tanpa harus menulistry/catchlebih dulu.typeofmenjawab"function"karena fitur tersebut tersedia di Node.js 24. - Baris 3 (
typeof RegExp.escape):RegExp.escapeadalah fungsi ES2025 yang mengamankan teks biasa sebelum teks itu dipakai sebagai pola pencarian RegExp. - Baris 4 (
typeof Iterator):Iteratoradalah object yang menjadi rumah iterator helpers — method sepertimapdantakeyang kini bisa dipakai langsung pada iterator. - Baris 2-4 (
console.log(...)): template literal menata keluaran dalam kolom yang rapi agar mudah dibaca.
Ketiganya menjawab "function" karena lingkungan uji kita — Node.js 24 dengan engine V8 13.6 — mendukung penuh ES2025. Pada runtime yang lebih lama, ketiga baris akan menjawab "undefined", dan kode tetap berjalan tanpa error. Kedinamisan inilah nilai utama feature detection: kita bisa menulis program yang beradaptasi dengan lingkungannya.
Mencicipi Satu Fitur ES2025 #
Sekarang kita coba salah satu fiturnya secara langsung. Set adalah struktur data yang menyimpan kumpulan nilai unik — nilai yang sama tidak pernah tersimpan dua kali. ES2025 menambahkan method operasi himpunan seperti union pada Set. Bayangkan Budi memilih tiga peserta lomba, sementara daftar hadir memuat dua nama:
const dipilih = new Set(["Budi", "Siti", "Ani"]);
const hadir = new Set(["Siti", "Rudi"]);
console.log(dipilih.union(hadir));Output yang Dihasilkan:
Set(4) { 'Budi', 'Siti', 'Ani', 'Rudi' }Kata kunci new membuat object Set baru, dan method union menggabungkan kedua kumpulan tanpa duplikat: angka 4 adalah jumlah anggota hasilnya, sedangkan bagian { ... } menampilkan isi kumpulan tersebut. Pada runtime tanpa ES2025, pemanggilan union menghasilkan TypeError karena method itu belum ada — persis situasi yang bisa dicegah lewat pemeriksaan feature detection pada bagian sebelumnya.
Dengan tiga pilar yang sudah kita kenal — bahasa, lingkungan eksekusi, dan standar — peta besar JavaScript sudah lengkap. Section berikutnya menurunkan peta itu menjadi tindakan nyata: menyiapkan lingkungan kerja agar kita bisa menulis dan menjalankan kode sendiri.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
cek-fitur.js
Unduh berkas// cek-fitur.js — memeriksa fitur ES2025 pada runtime yang dipakai
console.log(`Promise.try : ${typeof Promise.try}`);
console.log(`RegExp.escape : ${typeof RegExp.escape}`);
console.log(`Iterator : ${typeof Iterator}`);