Sebuah halaman web bisa terlihat sempurna di mata pengunjung, tetapi di dalamnya script JavaScript mungkin sedang gagal membaca elemen, mengirim data ke alamat yang salah, atau memunculkan galat yang tidak kita sadari. Masalahnya, kode yang berjalan di browser tidak menulis laporan ke mana pun; tanpa alat yang tepat, kita hanya menebak dari tampilan halaman.
Browser modern menyediakan jawabannya: DevTools, kumpulan panel bawaan untuk memeriksa HTML dan CSS, membaca pesan console, memantau berkas yang diunduh, sampai menghentikan eksekusi kode baris demi baris. Hampir semua pekerjaan JavaScript pada course ini — menguji potongan kode sampai melacak bug — akan melewati DevTools, sehingga kita wajib mengenalnya sejak sekarang.
Membuka DevTools #
DevTools terpasang di dalam browser yang sama dengan halaman yang sedang kita lihat, jadi tidak ada proses instalasi tambahan. Tabel berikut merangkum cara membukanya di tiga browser utama:
| Browser | Pintasan keyboard | Jalur menu |
|---|---|---|
| Chrome (Windows/Linux) | F12 atau Ctrl+Shift+I | Klik kanan halaman → Inspect |
| Chrome (macOS) | Cmd+Option+I | Klik kanan halaman → Inspect |
| Firefox | F12 atau Ctrl+Shift+I | Klik kanan halaman → Inspect |
| Safari (macOS) | Cmd+Option+I | Aktifkan dulu menu Develop melalui Settings → Advanced, lalu Develop → Show Web Inspector |
Setelah terbuka, DevTools muncul menempel di sisi jendela browser yang sama. Tab Console biasanya sudah aktif; bila tidak, klik tab berlabel Console.
Empat Panel yang Sering Kita Pakai #
DevTools berisi puluhan panel, tetapi untuk belajar JavaScript kita cukup empat:
| Panel | Peran utama |
|---|---|
| Console | Membaca pesan dari kode dan menjalankan JavaScript langsung di halaman. |
| Elements | Melihat struktur DOM halaman beserta CSS yang diterapkan; perubahan dari script terlihat di sini. |
| Network | Mencatat setiap berkas yang diunduh halaman (HTML, CSS, script, gambar, data API) beserta statusnya. |
| Sources | Menampilkan berkas JavaScript halaman dan menyediakan debugger untuk menghentikan eksekusi di titik tertentu. |
Browser lain menamai panelnya sedikit berbeda: Firefox menyebut Elements sebagai Inspector dan Sources sebagai Debugger. Fungsinya tetap sama, jadi pemahaman kita berlaku di mana pun.
Menjalankan Ekspresi Langsung di Console #
Console bukan sekadar pembaca pesan; tab ini juga menerima ekspresi JavaScript yang kita ketik. Ketik sebuah ekspresi, tekan Enter, dan console segera menampilkan nilainya — tanpa membuat berkas, tanpa memuat ulang halaman. Pada tab Console, coba ketik dua baris berikut:
> 25000 * 3
75000
> "Toko".toUpperCase()
'TOKO'Perhatikan dua hal. Pertama, hasil setiap ekspresi langsung muncul di baris berikutnya. Kedua, nilai string ditampilkan dengan tanda kutip tunggal — itu cara console menampilkan hasil evaluasi, bukan bagian dari nilai stringnya.
Console browser bekerja dengan prinsip yang sama seperti REPL di Node.js yang akan kita pakai pada chapter Pengenalan Node.js. Karena console.log berperilaku identik di keduanya, contoh-contoh pada course ini kita uji lewat terminal, dan hasilnya berlaku juga di tab Console.
Membaca Pesan Galat #
Galat penulisan nama adalah teman lama setiap programmer. Misalnya kita sengaja memanggil function yang tidak ada:
sapaPengguna("Budi");Jika berkas ini dimuat oleh sebuah halaman, tab Console langsung menampilkan laporan berikut:
Output yang Dihasilkan (pada tab Console browser):
Uncaught ReferenceError: sapaPengguna is not definedTiga bagian pesan itu patut dibaca perlahan. Uncaught berarti galat tidak ditangani oleh kode apa pun. ReferenceError adalah jenis galatnya: JavaScript menemui nama yang tidak ia kenal. Kalimat terakhir menyebut masalah persisnya, sapaPengguna is not defined, sehingga kita tahu yang salah adalah nama function, bukan argument-nya.
Pesan galat tampil sebagai baris merah dengan tautan berkas dan nomor baris. Klik tautan itu dan DevTools membawa kita ke tab Sources, tepat di baris bermasalah. Menjalankan berkas yang sama di terminal (node galat-sengaja.js) memunculkan ReferenceError: sapaPengguna is not defined — teks yang sama, karena browser dan Node memakai engine V8 yang sama.
Menghentikan Eksekusi dengan Breakpoint #
console.log cepat, tetapi menyebarkan pesan ke mana-mana dan mengharuskan kita menulis ulang kode. DevTools menyediakan cara yang lebih bersih: breakpoint, titik henti yang kita pasang di satu baris. Saat eksekusi mencapai baris itu, browser menghentikan kode di tengah jalan dan membekukan seluruh nilai yang ada pada saat itu juga.
Cara memasangnya di tab Sources:
- Buka tab Sources, lalu pilih berkas JavaScript halaman di panel kiri, misalnya
latihan-inspeksi.js. - Klik nomor baris tempat eksekusi harus berhenti — muncul penanda biru.
- Muat ulang halaman (
F5atauCtrl+R). Eksekusi berhenti tepat sebelum baris tersebut. - Arahkan kursor ke nama variable seperti
hargauntuk melihat nilainya saat itu. - Tekan
F8(Resume) untuk melanjutkan sampai breakpoint berikutnya, atauF10(Step over) untuk maju satu baris.
Contoh berkas yang cocok untuk latihan ini:
console.log("Memulai simulasi kasir");
const harga = 25000; // harga per item
const jumlah = 3; // banyak item yang dibeli
const total = harga * jumlah;
console.log("Total belanja:", total);Output yang Dihasilkan:
Memulai simulasi kasir
Total belanja: 75000Keluaran di atas kita dapatkan dengan node latihan-inspeksi.js; di tab Console browser, dua pesan yang sama muncul saat halaman memuat berkas ini. Sekarang pasang breakpoint di baris 5 (const total = harga * jumlah;) lalu muat ulang halaman. Eksekusi berhenti sebelum perkalian berjalan; kursor di atas harga menampilkan 25000, kursor di atas jumlah menampilkan 3. Tekan F10 untuk maju satu baris, dan total kini menampilkan 75000.
Mari kita telaah berkasnya baris demi baris:
- Baris 1 (
console.log("Memulai simulasi kasir")): mencetak teks pembuka ke console; kita memakainya untuk memastikan script benar-benar berjalan. - Baris 3 (
const harga = 25000;): memberi namahargapada nilai25000. Kata kunciconstdibahas tuntas di section Dasar Pemrograman; untuk sekarang anggap saja ini cara memberi nama pada nilai. - Baris 4 (
const jumlah = 3;): memberi namajumlahpada nilai3. - Baris 5 (
const total = harga * jumlah;): engine mengevaluasi25000 * 3menjadi75000, lalu menyimpannya dengan namatotal. - Baris 7 (
console.log("Total belanja:", total)): mencetak label beserta isitotaldalam satu baris.
Alur kerja dasar sudah lengkap: buka DevTools dengan F12, baca pesan di tab Console, dan pasang breakpoint di tab Sources bila perlu memeriksa nilai di tengah eksekusi. Chapter berikutnya memperdalam tab Console: method-method untuk menampilkan pesan yang lebih informatif.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
galat-sengaja.js
Unduh berkassapaPengguna("Budi");
latihan-inspeksi.js
Unduh berkasconsole.log("Memulai simulasi kasir");
const harga = 25000; // harga per item
const jumlah = 3; // banyak item yang dibeli
const total = harga * jumlah;
console.log("Total belanja:", total);