Console Methods — Debugging

Lebih dari console.log() Kebanyakan developer hanya menggunakan console.log(), padahal object console punya banyak method berguna lainnya. console.log() — Outpu

Lebih dari console.log()

Kebanyakan developer hanya menggunakan console.log(), padahal object console punya banyak method berguna lainnya.

console.log() — Output Biasa

// Basic
console.log("Hello");
console.log("User:", user);

// Multiple values
console.log("x =", x, "y =", y);

// Template literal (lebih rapi)
console.log(`User ${user.name} berumur ${user.age} tahun`);

// Dengan styling (di browser)
console.log("%cPeringatan!", "color: red; font-size: 20px;");

console.error() — Error Message

console.error("Gagal mengambil data!");
// Ditampilkan dengan warna merah dan stack trace
// Berguna untuk membedakan error dari log biasa

console.warn() — Warning

console.warn("API key akan expired dalam 7 hari");
// Ditampilkan dengan warna kuning

console.table() — Data Tabular

const users = [
  { nama: "Budi", umur: 25, kota: "Jakarta" },
  { nama: "Siti", umur: 30, kota: "Bandung" },
  { nama: "Andi", umur: 22, kota: "Surabaya" }
];

console.table(users);
// Menampilkan data dalam format tabel yang rapi
// ┌─────────┬────────┬─────┬───────────┐
// │ (index) │  nama  │ umur│   kota    │
// ├─────────┼────────┼─────┼───────────┤
// │    0    │ "Budi" │  25 │ "Jakarta" │
// │    1    │ "Siti" │  30 │ "Bandung" │
// │    2    │ "Andi" │  22 │ "Surabaya"│
// └─────────┴────────┴─────┴───────────┘

// Tampilkan kolom tertentu saja
console.table(users, ["nama", "kota"]);

console.group() — Grouping

console.group("User Data");
console.log("Nama: Budi");
console.log("Email: [email protected]");

  console.group("Alamat");
  console.log("Jalan: Sudirman");
  console.log("Kota: Jakarta");
  console.groupEnd();

console.groupEnd();

// Output terstruktur:
// ▼ User Data
//   Nama: Budi
//   Email: [email protected]
//   ▼ Alamat
//     Jalan: Sudirman
//     Kota: Jakarta

// groupCollapsed — sama tapi tertutup by default
console.groupCollapsed("Detail (klik untuk buka)");
console.log("Info tersembunyi");
console.groupEnd();

console.time() — Ukur Waktu Eksekusi

console.time("fetch-data");

// ... operasi yang ingin diukur ...
fetch("/api/users")
  .then(res => res.json())
  .then(data => {
    console.timeEnd("fetch-data");
    // Output: fetch-data: 234.567ms
  });

// Untuk multiple timing
console.time("total");
console.time("step-1");
// ... step 1 ...
console.timeEnd("step-1");  // step-1: 50ms

console.time("step-2");
// ... step 2 ...
console.timeEnd("step-2");  // step-2: 180ms
console.timeEnd("total");   // total: 230ms

console.count() — Hitung Pemanggilan

function handleClick(button) {
  console.count(button);
}

handleClick("save");    // save: 1
handleClick("save");    // save: 2
handleClick("delete");  // delete: 1
handleClick("save");    // save: 3

// Reset counter
console.countReset("save");
handleClick("save");    // save: 1

console.assert() — Conditional Log

// Hanya tampilkan pesan jika kondisi FALSE
const umur = 15;
console.assert(umur >= 18, "User belum cukup umur!", { umur });
// Output (karena 15 < 18):
// Assertion failed: User belum cukup umur! {umur: 15}

const saldo = 100;
console.assert(saldo > 0, "Saldo negatif!");
// Tidak ada output (karena 100 > 0)

console.trace() — Stack Trace

function c() {
  console.trace("Siapa yang memanggil saya?");
}
function b() { c(); }
function a() { b(); }

a();
// Output:
// Siapa yang memanggil saya?
//   c @ script.js:2
//   b @ script.js:4
//   a @ script.js:5

console.dir() — Object Detail

// Untuk DOM element, console.log menampilkan HTML
console.log(document.body);  // <body>...</body>

// console.dir menampilkan sebagai JavaScript object
console.dir(document.body);  // body { classList: ..., children: ... }

console.clear() — Bersihkan Console

console.clear();
// Menghapus semua output di console

Tips Penggunaan

  1. Gunakan console.table() untuk array of objects
  2. Gunakan console.group() untuk output yang banyak
  3. Gunakan console.time() untuk profiling sederhana
  4. Gunakan console.error() dan console.warn() untuk severity yang jelas
  5. Hapus semua console.log sebelum deploy ke production!
// Cara cepat hapus semua console.log di production
// Di build tool (webpack/vite):
// drop_console: true

Yang akan kamu pelajari