Kode ditulis sekali tetapi dibaca berkali-kali: oleh rekan satu tim, oleh kita sendiri tiga bulan kemudian, atau oleh anggota tim baru yang sedang mempelajari program. Tanpa catatan, pembaca hanya melihat apa yang dilakukan kode, bukan mengapa hal itu dilakukan. Siti, misalnya, pernah membuka ulang skrip buatannya sendiri dan butuh setengah jam untuk mengingat mengapa satu baris tertentu mengalikan nilai bukannya menjumlahkan. Komentar hadir untuk kasus seperti itu: teks yang kita tulis untuk pembaca manusia dan sepenuhnya diabaikan oleh engine.

Chapter ini membahas dua bentuk komentar di JavaScript, cara memakainya untuk melumpuhkan kode sementara saat pemeriksaan, dan kriteria komentar yang membantu alih-alih mengganggu. Sepanjang prosesnya kita juga menjalankan satu berkas contoh di Node agar bukti “komentar tidak berpengaruh” benar-benar terlihat.

Komentar Satu Baris #

Komentar satu baris dimulai dengan dua garis miring (//). Semua teks setelah tanda itu, sampai akhir baris, dilewati engine. Bentuk ini paling lazim untuk keterangan singkat di atas atau di samping sebuah baris kode:

js
// Baris ini diabaikan sepenuhnya oleh engine.
console.log("Baris ini berjalan"); // keterangan di belakang kode tidak mengganggu eksekusi

Output yang Dihasilkan:

text
Baris ini berjalan

Keluarannya hanya satu baris: teks setelah // tidak pernah dijalankan. Perhatikan bahwa komentar di belakang kode tidak memutus statement — engine tetap membaca console.log(...) sampai titik komanya, lalu mengabaikan sisanya.

Komentar Multi Baris #

Komentar multi baris diapit pasangan /* sebagai pembuka dan */ sebagai penutup. Semua teks di antara keduanya diabaikan, berapa pun jumlah barisnya. Bentuk ini cocok untuk penjelasan yang membutuhkan ruang lebih, seperti deskripsi aturan bisnis:

js
/*
Semua baris di dalam pasangan tanda ini
dianggap catatan, bukan kode:
console.log("Baris ini tidak jalan");
*/
console.log("Setelah komentar multi baris");

Output yang Dihasilkan:

text
Setelah komentar multi baris

Panggilan console.log yang berada di dalam blok komentar tidak pernah dieksekusi, meskipun secara sintaks kelihatan seperti kode yang sah. Inilah dasar teknik pada bagian berikutnya.

Melumpuhkan Kode Sementara #

Saat memeriksa perilaku program, kita sering ingin mencoba satu versi baris sambil tetap menyimpan versi lamanya. Teknik yang umum adalah menonaktifkan baris tersebut dengan komentar — praktik ini disebut commenting out. Berkas berikut memuat versi perhitungan lama yang dilumpuhkan dan versi baru yang aktif:

js komentar.js
// komentar.js
// Kasir sederhana kedai buku untuk mendemonstrasikan peran komentar.

/*
  Aturan promosi: pembelian di atas Rp100.000 mendapat potongan Rp15.000.
  Nilai promosi disimpan sekali di sini agar perubahan cukup dilakukan satu tempat.
*/
let batasPromosi = 100000;
let potonganPromosi = 15000;

let hargaBuku = 55000; // harga satu buku tulis
let jumlahBeli = 2;    // banyaknya buku yang dibeli Siti

let total = hargaBuku * jumlahBeli; // 110000, melampaui batas promosi

/*
let total = hargaBuku + jumlahBeli;
Versi lama yang keliru: memakai penjumlahan, bukan perkalian.
Kita nonaktifkan dengan komentar agar tetap bisa dibandingkan saat pemeriksaan.
*/

console.log("Total:", total);

Output yang Dihasilkan:

text
Total: 110000

Mari kita telaah peran setiap kelompok komentar di atas:

  1. Baris 4–7 (/* Aturan promosi ... */): komentar multi baris menjelaskan aturan bisnis yang melatarbelakangi dua variabel berikutnya. Pengetahuan ini tidak bisa ditebak dari kode saja.
  2. Baris 8–9 (let batasPromosi = 100000; dst.): dua statement aktif yang membaca komentar sebelumnya menjadi lebih bermakna.
  3. Baris 11–12 (// harga satu buku tulis): komentar satu baris di belakang kode memberi konteks singkat tanpa memutus statement.
  4. Baris 16–20 (/* let total = hargaBuku + jumlahBeli; ... */): versi perhitungan lama dilumpuhkan, bukan dihapus, sehingga pembaca yang menyelidiki riwayat perhitungan tetap bisa melihat penyebab perubahan.
  5. Baris 22 (console.log("Total:", total);): satu-satunya baris yang menghasilkan keluaran, sebagaimana terlihat pada blok hasil di atas.

Komentar yang Membantu vs Mengganggu #

Komentar bukan pengganti nama variabel yang baik, dan bukan juga tempat menyalin kode ke dalam bahasa manusia. Dua contoh perbandingan:

  • Mengganggu: let t = 0; // t adalah total — nama t sendiri yang seharusnya diperbaiki menjadi total.
  • Membantu: total = total - potongan; // potongan hanya berlaku untuk anggota — kode tidak bisa menyampaikan syarat bisnis tersebut.

Beberapa panduan praktis yang bisa kita pegang:

  • Jelaskan mengapa kode ditulis begitu, bukan mengulang apa yang sudah terlihat.
  • Perbarui komentar setiap kali kode berubah; komentar yang usang lebih merugikan daripada tanpa komentar.
  • Simpan penjelasan panjang untuk komentar multi baris di atas blok kode, dan biarkan komentar satu baris untuk catatan pendek.
  • Hapus komentar sisa eksperimen sebelum kode dibagikan.

Ketika kita sampai di section Functions, akan muncul satu gaya komentar khusus bernama JSDoc: komentar multi baris yang dimulai dengan /** dan berisi tag seperti @param serta @returns untuk mendokumentasikan masukan dan keluaran sebuah function. Editor memanfaatkan dokumentasi itu untuk menampilkan petunjuk saat kode ditulis, sehingga komentar memainkan peran ganda: catatan untuk manusia dan sumber petunjuk untuk alat bantu.

Penanda Bagian dan Catatan Kerja #

Di berkas yang makin panjang, komentar juga berperan sebagai pembatas visual antar bagian. Gaya banner yang lazim memakai deretan tanda sama dengan atau garis miring agar mata cepat menemukan batasnya:

js
// ===== Perhitungan Diskon =====
// Semua logika potongan harga dikelompokkan di bawah penanda ini.

Dua konvensi singkat yang sering dijumpai di kode industri:

  • // TODO: ... menandai pekerjaan yang disengaja untuk dikerjakan belakangan, misalnya mengganti angka promosi yang masih tertulis tetap.
  • // FIXME: ... menandai bagian yang diketahui keliru dan menunggu perbaikan segera.

Kedua penanda itu berguna justru karena mudah dicari: editor dan alat pemindai kode dapat menyaring seluruh berkas untuk menampilkan daftar TODO dan FIXME yang masih tertunda.

js
/* luar /* dalam */
console.log("Baris ini ikut dieksekusi"); */

Jika dijalankan, berkas tersebut berhenti dengan pesan:

text
SyntaxError: Unexpected token '*'

Engine membaca blok komentar hanya sampai */ pertama di akhir baris pertama. Baris kedua dieksekusi dengan normal, lalu sisa */ yang tidak bermula dari pembacaan yang sah memunculkan SyntaxError. Kebiasaan amannya: bila perlu menonaktifkan blok yang di dalamnya sudah ada komentar, tambahkan // di setiap baris, bukan membungkusnya dengan /* ... */.

Kita kini mampu menuliskan instruksi yang disertai catatan. Berikutnya variabel menyempurnakan pasangan ini: instruksi yang menyimpan nilai berlabel agar bisa dibaca dan diperbarui kapan pun.

Berkas Sumber

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

komentar.js

Unduh berkas
javascript
// komentar.js
// Kasir sederhana kedai buku untuk mendemonstrasikan peran komentar.

/*
  Aturan promosi: pembelian di atas Rp100.000 mendapat potongan Rp15.000.
  Nilai promosi disimpan sekali di sini agar perubahan cukup dilakukan satu tempat.
*/
let batasPromosi = 100000;
let potonganPromosi = 15000;

let hargaBuku = 55000; // harga satu buku tulis
let jumlahBeli = 2;    // banyaknya buku yang dibeli Siti

let total = hargaBuku * jumlahBeli; // 110000, melampaui batas promosi

/*
let total = hargaBuku + jumlahBeli;
Versi lama yang keliru: memakai penjumlahan, bukan perkalian.
Kita nonaktifkan dengan komentar agar tetap bisa dibandingkan saat pemeriksaan.
*/

console.log("Total:", total);