Lompat ke konten
Kembali ke modul

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.

HalApa ituContoh
BahasanyaSintaks dan aturan: if, function, cara + bekerjaJavaScript
StandarnyaSpesifikasi tertulis yang harus diikuti bahasanyaECMAScript
Engine-nyaProgram yang membaca dan menjalankan kodemuV8, SpiderMonkey
Runtime-nyaEngine plus kemampuan tambahan yang diberikan padanyaBrowser, 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 diBrowserNode.js
document, windowYaTidak
fs (membaca file)TidakYa
process.envTidakYa
fetch, console, JSONYaYa
Array, Promise, MathYaYa

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".

Coba sendiri

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.