JavaScript: Bahasanya · 1/12
Apa itu JavaScript (dan apa yang bukan)
Bahasa, standar, engine, dan runtime itu empat hal berbeda. Banyak kebingungan mulai dari sini.
Baca 20 menit
Setelah pelajaran ini kamu bisa
- Membedakan bahasa, standar, engine, dan runtime
- Menjelaskan kenapa kode yang sama bisa jalan di satu tempat tapi gagal di tempat lain
- Menjelaskan arti `ES2015` dan `ES6` saat rekan kerja menyebutnya
Ada empat hal berbeda yang sama-sama disebut "JavaScript" dalam percakapan sehari-hari. Membedakannya adalah pembeda antara menebak dan benar-benar tahu saat ada yang rusak.
| Hal | Apa itu | Contoh |
|---|---|---|
| Bahasanya | Sintaks dan aturan: if, function, cara + bekerja | JavaScript |
| Standarnya | Spesifikasi tertulis yang harus diikuti bahasanya | ECMAScript |
| Engine-nya | Program yang membaca dan menjalankan kodemu | V8, SpiderMonkey |
| Runtime-nya | Engine plus kemampuan tambahan yang diberikan padanya | Browser, Node.js, Bun |
Runtime-lah yang sebenarnya berbeda
Bahasanya memberimu value, function, object, dan loop. Ia tidak memberimu cara membaca file, menampilkan alert, atau mendengarkan sebuah port. Semua itu datang dari runtime, dan inilah sebabnya file yang sama bisa jalan di Node tapi crash di browser.
| Tersedia di | Browser | Node.js |
|---|---|---|
document, window | Ya | Tidak |
fs (membaca file) | Tidak | Ya |
process.env | Tidak | Ya |
fetch, console, JSON | Ya | Ya |
Array, Promise, Math | Ya | Ya |
Dua baris terbawah itu bahasanya. Tiga baris teratas itu runtime meminjamkan kemampuannya sendiri. document is not defined bukan error JavaScript — itu runtime yang bilang "saya memang tidak pernah punya itu".
Ini jalan di dalam Web Worker — runtime browser yang tidak punya halaman. Perhatikan mana yang ada dan mana yang tidak.
Hasil
Tekan Jalankan untuk melihat hasilnya.
Ini jalan di browser kamu, di dalam sandbox. Apa pun yang kamu tulis di sini tidak bisa merusak situs.
Versi: ES6, ES2015, dan "JavaScript modern"
ECMAScript punya edisi baru setiap tahun, dinamai menurut tahunnya: ES2015, ES2016, dan seterusnya. ES2015 adalah edisi besar yang menambahkan let, const, arrow function, class, promise, dan module — ia juga disebut ES6, itu sebabnya kamu akan melihat dua nama untuk hal yang sama.
Tugas praktik
Buka console browser dan ketik window, lalu tekan Enter. Sekarang jalankan node -e "console.log(typeof window)" di terminal. Bahasa sama, dua runtime berbeda. Lalu jalankan node -e "console.log(process.version)" dan catat versi engine yang kamu punya.
Hasil yang diharapkan
Object besar di browser; `undefined` di Node.