Pengantar Lengkap JavaScript

Panduan Tutorial JavaScript dari Nol

#01: Mengenal JavaScript

JavaScript (JS) adalah bahasa pemrograman yang membuat website menjadi "hidup". Jika HTML hanya membangun struktur (kerangka) dan CSS hanya memberi gaya (dekorasi), maka JavaScript-lah yang menambahkan interaksi dan logika. Dengan JavaScript, Anda bisa membuat gambar slider, form validasi, game, dan banyak lagi. Ia adalah pilar ketiga dari pengembangan web modern.

Analogi: Trio Pembangun Web
HTML: Sang Arsitek yang merancang struktur dan kerangka bangunan.
CSS: Sang Desainer Interior yang memilih warna cat dan menata perabotan.
JavaScript: Sang Insinyur Listrik yang memasang saklar dan sistem otomatis agar bangunan bisa merespons penghuninya.

#02: Cara Menulis JavaScript di HTML

Ada dua cara utama untuk menambahkan JavaScript ke halaman web:

A. Internal JavaScript (di dalam HTML)

Kode ditulis langsung di dalam file HTML menggunakan tag <script>. Cocok untuk skrip yang sangat pendek.

<body>
  <script>
    // Kode JS ditulis di sini
  </script>
</body>

B. External JavaScript (Praktik Terbaik)

Kode ditulis dalam file terpisah dengan ekstensi .js (contoh: skrip.js) dan dihubungkan ke HTML. Ini membuat kode lebih rapi dan bisa digunakan di banyak halaman.

<!-- Di file HTML, idealnya sebelum tag penutup </body> -->
<script src="skrip.js"></script>

#03: Fungsi Output & Input

Agar interaktif, JavaScript perlu cara untuk berkomunikasi dengan pengguna. Ia bisa memberikan output (menampilkan informasi) dan menerima input (meminta masukan).

A. Menampilkan Output

Ada beberapa cara untuk menampilkan informasi dari JavaScript ke pengguna.

Teks awal.

// 1. Mengubah konten elemen HTML dengan .innerHTML
document.getElementById("output-text").innerHTML = "Teks diubah!";

// 2. Menampilkan pop-up sederhana dengan alert()
alert("Ini adalah pesan alert.");

// 3. Menulis ke console browser (untuk developer)
console.log("Pesan ini hanya terlihat di console (F12).");

Penjelasan Kode: .innerHTML adalah cara paling umum untuk menampilkan output di halaman. alert() berguna untuk notifikasi cepat. console.log() adalah alat debugging terpenting bagi seorang developer.

B. Menerima Input

JavaScript juga bisa meminta masukan dari pengguna menggunakan jendela dialog.

// 1. Meminta input teks dengan prompt()
let nama = prompt("Siapa nama Anda?", "Siswa");
// Parameter kedua adalah nilai default

// 2. Meminta konfirmasi Ya/Tidak dengan confirm()
let yakin = confirm("Apakah Anda yakin?");
if (yakin) {
  alert("Baik, kita lanjutkan!");
} else {
  alert("Dibatalkan.");
}

Penjelasan Kode: prompt() akan mengembalikan teks yang diketik pengguna (atau null jika dibatalkan). confirm() akan mengembalikan nilai boolean: true jika pengguna menekan "OK", dan false jika menekan "Cancel".

#04: Variabel dan Tipe Data

Variabel adalah nama simbolis untuk sebuah nilai. Anggap saja seperti wadah berlabel yang bisa Anda isi dengan data. Tipe Data adalah jenis dari data tersebut. JavaScript adalah bahasa "loosely typed", artinya Anda tidak perlu mendeklarasikan tipe data dari sebuah variabel.

Analogi: Kotak Penyimpanan Berlabel
Variabel adalah kotak, nama variabel adalah label di kotak itu (misal: "Mainan Anak"), dan nilai adalah isi kotaknya. Tipe data adalah jenis isinya: apakah itu surat (String), kelereng (Number), atau saklar on/off (Boolean).

Contoh 1: Deklarasi Variabel

let pesan; // Mendeklarasikan variabel bernama 'pesan'
pesan = "Halo Dunia"; // Memberi nilai (assignment) ke variabel 'pesan'
document.getElementById('var-preview-1').textContent = pesan;

Penjelasan Kode: Baris pertama membuat "wadah" kosong bernama pesan. Baris kedua mengisi wadah tersebut dengan teks "Halo Dunia".

Contoh 2: let vs const

let skor = 100;
skor = 150; // Benar, nilai `let` bisa diubah

const namaPanggilan = "Alex";
// namaPanggilan = "Budi"; // Salah! Ini akan menyebabkan error karena nilai `const` tidak bisa diubah.
document.getElementById('var-preview-2').textContent = `Skor terakhir: ${skor}, Nama Panggilan: ${namaPanggilan}`

Penjelasan Kode: Gunakan let jika Anda tahu nilainya akan berubah. Gunakan const (konstan) untuk nilai yang tidak akan pernah berubah, ini membuat kode lebih aman dan mudah diprediksi.

Contoh 3: Tipe Data Primitif

let namaSiswa = "Citra";  // Tipe data String (teks)
let umur = 17;         // Tipe data Number (angka)
let sudahLulus = false; // Tipe data Boolean (benar/salah)
document.getElementById('var-preview-3').innerHTML = 
`Nama: ${namaSiswa} (${typeof namaSiswa})<br>
Umur: ${umur} (${typeof umur})<br>
Lulus: ${sudahLulus} (${typeof sudahLulus})`;

Penjelasan Kode: Operator typeof digunakan untuk memeriksa tipe data dari sebuah variabel, ini sangat berguna saat melakukan debugging.

#05: Operator

Operator adalah simbol khusus yang digunakan untuk melakukan operasi pada nilai dan variabel. Memahaminya adalah kunci untuk melakukan perhitungan dan logika.

Contoh 1: Operator Aritmatika

let x = 15;
let y = 4;
let sisaBagi = x % y; // Operator Modulo (sisa bagi), hasilnya 3
document.getElementById("op-preview-1").innerHTML = "Sisa dari 15 dibagi 4 adalah: " + sisaBagi;

Penjelasan Kode: Operator % (modulo) sangat berguna untuk menemukan sisa dari sebuah pembagian, misalnya untuk menentukan apakah sebuah angka ganjil atau genap.

Contoh 2: Operator Penugasan (Assignment)

let a = 10;
a += 5; // Sama dengan a = a + 5. Nilai a sekarang 15
document.getElementById("op-preview-2").innerHTML = "Nilai a setelah 'a += 5' adalah " + a;

Penjelasan Kode: Operator += adalah cara singkat untuk menambahkan nilai ke variabel yang sudah ada. Ini juga berlaku untuk -=, *=, dan /=.

Contoh 3: Operator Perbandingan (== vs ===)

let angka = 5;
let teks = "5";
let hasil1 = (angka == teks); // true, karena nilainya sama
let hasil2 = (angka === teks); // false, karena tipe datanya berbeda (Number vs String)
document.getElementById("op-preview-3").innerHTML = `5 == "5" ? ${hasil1} <br> 5 === "5" ? ${hasil2}`;

Penjelasan Kode: Selalu utamakan menggunakan === (Strict Equality) untuk perbandingan. Ini akan membandingkan nilai DAN tipe datanya, sehingga lebih aman dan akurat.

#06: Percabangan (if/else)

Memungkinkan program untuk membuat keputusan dan menjalankan kode yang berbeda berdasarkan kondisi tertentu.

Analogi: Memilih Jalan di Persimpangan
Bayangkan Anda berada di persimpangan. if (tujuan == "kanan") adalah seperti Anda bertanya "Apakah tujuan saya ke kanan?". Jika ya, Anda belok kanan. else if (tujuan == "kiri") adalah pertanyaan kedua, "Jika tidak ke kanan, apakah tujuannya ke kiri?". Jika tidak keduanya, else adalah pilihan terakhir, "Kalau begitu, saya akan lurus."

Contoh 1: Pengecekan Umur Sederhana

let umur = 15;
if (umur >= 17) {
  document.getElementById('if-preview-1').textContent = "Anda boleh membuat SIM.";
} else {
  document.getElementById('if-preview-1').textContent = "Anda belum cukup umur.";
}

Contoh 2: Sistem Grading dengan else if

let nilai = 85;
let grade;
if (nilai >= 90) { grade = "A"; } 
else if (nilai >= 80) { grade = "B"; } 
else if (nilai >= 70) { grade = "C"; } 
else { grade = "D"; }
document.getElementById('if-preview-2').textContent = `Nilai ${nilai} mendapatkan grade ${grade}.`;

Contoh 3: Kondisi dengan Operator Logika && (DAN)

let punyaTiket = true;
let usia = 20;
if (punyaTiket === true && usia >= 18) {
  document.getElementById('if-preview-3').textContent = "Silakan masuk ke bioskop.";
} else {
  document.getElementById('if-preview-3').textContent = "Maaf, Anda tidak bisa masuk.";
}

#07: Perulangan (Loops)

Digunakan untuk menjalankan blok kode yang sama berulang kali. Ini sangat efisien untuk tugas-tugas repetitif.

Contoh 1: Loop for Sederhana

Menampilkan angka 1 sampai 5.

let teks = "";
for (let i = 1; i <= 5; i++) {
  teks += i + " ";
}
document.getElementById('loop-preview-1').textContent = teks; // Hasil: "1 2 3 4 5 "

Contoh 2: Loop for pada Array

Menampilkan semua item dalam sebuah daftar.

    const buah = ["Apel", "Pisang", "Mangga"];
    let listBuah = "";
    for (let i = 0; i < buah.length; i++) {
      listBuah += `<li>${buah[i]}</li>`;
    }
    document.getElementById('loop-preview-2').innerHTML = listBuah;

    Contoh 3: Loop while

    Terus berjalan selama kondisi terpenuhi.

    let hitungan = 0;
    let hasilWhile = "";
    while (hitungan < 3) {
      hasilWhile += "Hitungan ke-" + hitungan + "<br>";
      hitungan++;
    }
    document.getElementById('loop-preview-3').innerHTML = hasilWhile;

    #08: Struktur Data Array

    Array adalah variabel khusus yang dapat menampung lebih dari satu nilai. Ini sangat berguna untuk mengelola daftar data.

    Contoh 1: Membuat dan Mengakses Array

    const buah = ["Apel", "Pisang", "Mangga"];
    // Mengakses elemen kedua (indeks 1)
    document.getElementById('array-result-1').textContent = `Buah favorit saya adalah ${buah[1]}.`;

    Contoh 2: Mengubah Elemen Array

    const warna = ["Merah", "Kuning", "Biru"];
    warna[1] = "Hijau"; // Mengubah "Kuning" menjadi "Hijau"
    document.getElementById('array-result-2').textContent = `Warna sekarang: ${warna.join(', ')}`;

    Contoh 3: Menambah Elemen dengan .push()

    const hewan = ["Kucing", "Anjing"];
    hewan.push("Kelinci"); // Menambah "Kelinci" di akhir array
    document.getElementById('array-result-3').textContent = `Daftar hewan: ${hewan.join(', ')}`;

    #09: Fungsi

    Blok kode yang dapat digunakan kembali. Ini adalah konsep inti untuk membuat kode yang terorganisir.

    function hitungLuas(panjang, lebar) {
      return panjang * lebar;
    }
    
    // Fungsi akan dipanggil saat tombol diklik
    document.getElementById('btn-fungsi').onclick = () => {
        let luas = hitungLuas(10, 5);
        document.getElementById('fungsi-result').textContent = `Luasnya adalah ${luas}`;
    };

    #10: Objek

    Objek digunakan untuk mengelompokkan data dan fungsi yang terkait dalam satu wadah, merepresentasikan "benda" dengan properti dan kemampuannya.

    const siswa = {
      nama: "Andi",
      jurusan: "TJKT",
      perkenalan: function() {
        return `Halo, saya ${this.nama} dari jurusan ${this.jurusan}.`;
      }
    };
    document.getElementById('objek-result').textContent = siswa.perkenalan();

    #11: Mengenal DOM

    DOM (Document Object Model) adalah cara JavaScript melihat halaman HTML. Ia mengubah seluruh dokumen menjadi sebuah objek besar berbentuk pohon, di mana setiap elemen adalah sebuah "cabang" yang bisa diakses dan dimanipulasi.

    #12: Memahami Event

    Event adalah aksi yang terjadi di halaman web yang dapat direspons oleh JavaScript. Ini adalah kunci interaktivitas.

    document.getElementById('event-btn').addEventListener('click', () => {
      alert('Event "click" terdeteksi!');
    });

    Kesimpulan Akhir

    Selamat! Anda telah mempelajari semua konsep paling dasar yang diperlukan untuk mulai menggunakan JavaScript. Anda tahu apa itu JS, bagaimana menulisnya, dan bagaimana ia berinteraksi dengan HTML untuk menciptakan halaman web yang dinamis. Perjalanan Anda sebagai developer web telah dimulai. Teruslah berlatih dengan membuat proyek-proyek kecil untuk mengasah pemahaman Anda.