Bahasa yang memberi kehidupan pada halaman web.
const, let), fungsi, array, dan objek.localStorage.Struktur gedung: ruangan, pintu, furniture.
Dekorasi: cat, lampu, tata letak, responsivitas.
Manajer gedung: merespons tamu (event), mengubah tata letak (DOM), dan mencatat data (State).
Bab ini tetap manual-first. JavaScript adalah fondasi.
Alur event-driven dari aksi pengguna ke layar:
Aksi Pengguna (Klik) 🖱️
↓
Event Listener / Handler 📡
↓
State Berubah & DOM Dimanipulasi 🔄
↓
Browser Re-render (Layout → Paint → Composite) 🎨
Gunakan const sebagai default. Gunakan let hanya jika nilai berubah.
// const: nilai tidak bisa di-reassign
const nama = "Dira";
nama = "Andi"; // ❌ Error!
// let: nilai bisa di-reassign (contoh: counter)
let usia = 22;
usia = 23; // ✅ Berhasil
// var: JANGAN GUNAKAN LAGI (masalah scope)
Primitif di-copy nilainya. Objek di-copy alamatnya.
const obj1 = { value: 10 };
const obj2 = obj1; // Keduanya merujuk ke memori SAMA
obj2.value = 20;
console.log(obj1.value); // Output: 20
// Mengapa? Karena obj2 = obj1 hanya menyalin reference!
function sapa(nama) {
return `Halo, ${nama}!`;
}
const sapa = (nama) => {
return `Halo, ${nama}!`;
}
// Setara dengan:
const sapa = nama => `Halo ${nama}`;
JavaScript berinteraksi langsung dengan DOM Tree.
// Mengambil referensi elemen
const judul = document.getElementById('judul');
// ✅ AMAN: Mengubah Teks
judul.textContent = 'Teks baru';
// ❌ BAHAYA (XSS): Inner HTML dengan input user
judul.innerHTML = '<strong>Bold</strong>';
// Mengubah Styling (Lebih disarankan toggle class)
judul.classList.add('highlight');
Membuat elemen merespons tindakan.
const tombol = document.getElementById('btn');
let hitungan = 0;
tombol.addEventListener('click', (event) => {
hitungan++;
console.log(`Diklik! Total: ${hitungan}`);
console.log(event.target); // Elemen yang diklik
});
Prinsip: Pisahkan Data (State) dari Tampilan (DOM).
1. State adalah satu-satunya sumber kebenaran (Source of Truth).
2. Event mengubah State.
3. Fungsi render membangun ulang DOM berdasarkan State terbaru.
Event → State Update → Re-render → DOM
Menyimpan data string agar bertahan dari reload halaman.
// Menyimpan Objek (Harus di-stringify)
const user = { name: 'Dira', age: 22 };
localStorage.setItem('user', JSON.stringify(user));
// Mengambil dan Parse Objek
const savedData = localStorage.getItem('user');
const savedUser = JSON.parse(savedData);
⚠️ Jangan pernah simpan token/password di localStorage!
Temukan bug pada kode counter menggunakan `console.log` dan DevTools.
Prediksi output dari code block tanpa menjalankannya (Test mental model).
Buat list Task sederhana dengan localStorage, murni mengandalkan memori sendiri.
Integrasi HTML (Bab 2), CSS (Bab 3), dan JavaScript (Bab 4).
localStorage.🎉 Selamat! Bagian I terbangun sempurna.
Selanjutnya di Bab 5, Anda akan masuk ke Level 2. AI boleh membantu menulis kode (snippet), tetapi Anda diwajibkan melakukan:
Generate → Evaluate → Explain → Modify