Halaman web yang hanya berdiri diam cepat membosankan bagi pengunjungnya. Ketika Budi menekan tombol “Tambah ke Keranjang” di sebuah toko online, angka pada ikon keranjang harus bertambah tanpa memuat ulang halaman; ketika Siti salah menuliskan alamat email, peringatan muncul seketika sebelum data dikirim ke server. Respons-respons semacam itu bukan pekerjaan HTML atau CSS — keduanya hanya menata struktur dan tampilan. Yang menggerakkan perilaku halaman adalah JavaScript.

JavaScript adalah bahasa pemrograman bertipe dinamis yang berjalan di banyak tempat: di browser, di server, hingga di alat baris perintah. Bahasa ini dibuat oleh Brendan Eich di Netscape pada tahun 1995, lalu distandarkan sebagai ECMAScript (dokumen ECMA-262) pada tahun 1997 agar seluruh pihak mengacu pada aturan yang sama. Hari ini JavaScript termasuk bahasa pemrograman dengan jumlah pengguna terbesar di dunia. Sebelum menulis kode, kita perlu menjawab tiga pertanyaan dasar: apa sebenarnya JavaScript, dari mana asalnya, dan apa saja keunikannya.

Sejarah Singkat: dari Netscape ke ES2025 #

Perjalanan JavaScript bisa kita rangkum dalam beberapa tonggak waktu berikut:

TahunPeristiwa
1995Brendan Eich membuat prototipe pertama di Netscape. Prototipe tersebut sempat bernama Mocha, lalu LiveScript, sebelum akhirnya memakai nama JavaScript.
1997Ecma International menerbitkan edisi pertama standar ECMA-262, yang dikenal sebagai ECMAScript.
2009Node.js membawa JavaScript keluar dari browser ke server (dibahas pada chapter JavaScript di Luar Browser).
2015ES2015 (sering disebut ES6) memodernisasi bahasa secara besar: let dan const, class, module, Promise, dan banyak lagi.
2025ES2025 disetujui Ecma pada 25 Juni 2025, menambahkan antara lain iterator helpers, Set methods, Promise.try, dan RegExp.escape.

Nama “JavaScript” lahir dari alasan pemasaran: Java sedang naik daun pada masa itu, dan Netscape ingin bahasa barunya ikut diperhatikan. Faktanya, JavaScript dan Java adalah dua bahasa yang berbeda jauh, sebagaimana kita bedah di bawah.

Karakteristik Utama Bahasa #

Empat sifat berikut menjelaskan “rasa” JavaScript dibanding bahasa lain, dan akan terasa berulang kali sepanjang Course ini:

  • Tipe dinamis: tipe data diperiksa saat program berjalan, bukan saat kode ditulis. Kita tidak menuliskan tipe pada variabel, dan satu variabel boleh menampung nilai bertipe berbeda selama program berjalan.
  • Multiparadigma: masalah yang sama bisa diselesaikan dengan gaya prosedural, object-oriented berbasis prototype, maupun functional. Course ini memperkenalkan ketiganya bertahap.
  • Function sebagai nilai (first-class function): function bisa disimpan di variabel, dikirim sebagai argument ke function lain, dan dikembalikan sebagai hasil. Sifat ini menjadi fondasi banyak pola modern.
  • Single-threaded dengan event loop: kode dieksekusi di satu jalur utama, sementara tugas seperti menunggu respons jaringan dikelola lewat mekanisme antrian. Kita akan menyentuh konsep ini lebih dalam pada section lanjutan.

Konsekuensi dari keempat sifat itu terasa nyata ketika menulis: kita bisa memulai dengan cepat karena tidak ada penulisan tipe yang wajib, dan satu masalah bisa dipecahkan dengan beberapa gaya berbeda. Konsekuensinya pula, kesalahan yang pada bahasa bertipe ketat tertangkap sebelum program berjalan, di JavaScript baru muncul saat program dieksekusi. Course ini menyiasatinya dengan menguji setiap contoh kode secara nyata dan membiasakan pemeriksaan bertahap — kebiasaan yang akan kita bangun pelan-pelan mulai section Dasar Pemrograman.

Istilah yang Akan Sering Muncul #

Sebelum melangkah lebih jauh, mari kita samakan kosakata. Empat istilah berikut akan berulang kali muncul, baik di Course ini maupun di dokumentasi mana pun:

IstilahArti singkat
EngineProgram yang menerjemahkan dan menjalankan kode — contohnya V8, SpiderMonkey, dan JavaScriptCore
RuntimeLingkungan eksekusi lengkap: engine beserta API di sekelilingnya, misalnya browser atau Node.js
Browser APIKumpulan object tambahan dari browser seperti document, window, dan fetch
ConsoleJendela keluaran tempat pesan dari program kita tampil, baik di DevTools browser maupun di terminal

Perbedaan engine dan runtime khususnya sering tertukar. Engine hanya menerjemahkan dan mengeksekusi bahasa; runtime menambahkan kemampuan di luar bahasa — browser menyediakan DOM dan jaringan, Node.js menyediakan akses berkas dan server. Dua chapter berikutnya membedah keduanya satu per satu.

Contoh Pertama: Program yang Berjalan Nyata #

Teori sejarah dan karakteristik belum terasa nyata tanpa program sungguhan. Program berikut menghitung total pesanan kopi untuk pelanggan bernama Budi, lalu menampilkan hasilnya ke console. Berkas ini dijalankan dengan Node.js 24 di terminal:

// sapa-pengunjung.js — program JavaScript pertama kita
const nama = "Budi";
const hargaKopi = 18000;
const jumlahCangkir = 2;
const total = hargaKopi * jumlahCangkir;

console.log(`Selamat datang, ${nama}!`);
console.log(`Total pesanan: Rp${total}`);

Output yang Dihasilkan:

text
Selamat datang, Budi!
Total pesanan: Rp36000

Mari kita telaah apa yang terjadi pada baris-baris kode di atas:

  1. Baris 2 (const nama = "Budi"): kita membuat variabel bernama nama dan mengisinya dengan teks "Budi". Kata kunci const menandai nilai yang tidak akan diisi ulang di kemudian hari.
  2. Baris 3 (const hargaKopi = 18000): variabel hargaKopi menyimpan harga satu cangkir kopi dalam rupiah, tanpa tanda titik atau pemisah ribuan.
  3. Baris 4 (const jumlahCangkir = 2): variabel jumlahCangkir menyimpan banyaknya cangkir yang dipesan.
  4. Baris 5 (const total = hargaKopi * jumlahCangkir): engine mengevaluasi sisi kanan terlebih dahulu (18000 * 2 menghasilkan 36000), lalu menyimpan hasilnya ke variabel total.
  5. Baris 7-8 (console.log(...)): kedua baris memakai template literal — teks yang diapit backtick (`) dengan bagian ${...} yang diganti nilai variabel secara otomatis. Function console.log menampilkan setiap baris ke console.

Perhatikan bahwa Rp36000 tampil tanpa pemisah ribuan, karena JavaScript menyimpan angka sebagai nilai murni tanpa format. Pemformatan tampilan seperti Rp36.000 adalah pekerjaan terpisah yang akan kita pelajari pada section Values dan Types.

Di Mana Saja JavaScript Berjalan #

Kekuatan terbesar JavaScript modern ada pada jangkauannya. Satu bahasa, banyak panggung:

  • Browser: Chrome, Firefox, Safari, dan Edge menjalankan JavaScript untuk membuat halaman web interaktif — satu-satunya bahasa yang dipahami browser secara langsung.
  • Server dan alat baris perintah: Node.js, Deno, dan Bun menjalankan JavaScript di luar browser untuk API, tooling, dan skrip otomasi.
  • Perangkat lain lewat framework: aplikasi desktop (misalnya Electron) dan aplikasi mobile (misalnya React Native) turut memakai JavaScript sebagai bahasa pengembangannya.

Dengan peta besar ini di tangan, kita siap turun ke rincian pertama: bagaimana JavaScript bekerja di dalam browser, tempat asal usulnya berdiri.

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

sapa-pengunjung.js

Unduh berkas
javascript
// sapa-pengunjung.js — program JavaScript pertama kita
const nama = "Budi";
const hargaKopi = 18000;
const jumlahCangkir = 2;
const total = hargaKopi * jumlahCangkir;

console.log(`Selamat datang, ${nama}!`);
console.log(`Total pesanan: Rp${total}`);