๐ JavaScript ยท Tutorial 4
JavaScript Lanjutan: Function & Event
Sudah tahu dasar JS? Saatnya naik level! Pelajari arrow function, array methods, event listener, dan buat mini proyek to-do list yang fungsional.
1. Arrow Function โ Cara Modern Nulis Fungsi
Arrow function (=>) adalah cara menulis fungsi yang lebih singkat dan modern.
// Fungsi biasa
function sapa(nama) {
return `Halo, ${nama}!`;
}
// Arrow function โ lebih singkat!
const sapa = (nama) => `Halo, ${nama}!`;
// Jika hanya 1 parameter, kurung boleh dihilangkan
const kuadrat = n => n * n;
console.log(sapa("Budi")); // Halo, Budi!
console.log(kuadrat(5)); // 25
2. Array Methods โ Olah Data dengan Elegan
Array punya method bawaan yang super berguna. Tiga yang paling sering dipakai:
const nilai = [75, 85, 60, 90, 55];
// .filter() โ ambil yang memenuhi syarat
const lulus = nilai.filter(n => n >= 75);
console.log(lulus); // [75, 85, 90]
// .map() โ ubah setiap item
const plusBonus = nilai.map(n => n + 5);
console.log(plusBonus); // [80, 90, 65, 95, 60]
// .forEach() โ lakukan sesuatu untuk tiap item
nilai.forEach((n, index) => {
console.log(`Siswa ${index+1}: nilai ${n}`);
});
// .find() โ cari item pertama yang cocok
const pertamaDiatas80 = nilai.find(n => n > 80);
console.log(pertamaDiatas80); // 85
3. Event Listener โ Reaksi terhadap Aksi User
Event listener "mendengarkan" aksi pengguna dan menjalankan kode saat aksi itu terjadi.
// HTML-nya:
// <button id="tombol">Klik Aku!</button>
// <p id="output"></p>
const tombol = document.getElementById('tombol');
const output = document.getElementById('output');
// Saat tombol diklik
tombol.addEventListener('click', () => {
output.textContent = 'Kamu mengklik tombol! ๐';
output.style.color = 'green';
});
// Event lain yang sering dipakai:
// 'mouseover' โ saat mouse di atas elemen
// 'keydown' โ saat keyboard ditekan
// 'input' โ saat isi input berubah
// 'submit' โ saat form disubmit
4. Template Literal & Destructuring
// Template Literal โ string dengan variabel
const nama = "Siti";
const nilai = 88;
const pesan = `Selamat, ${nama}! Nilaimu ${nilai}. ${nilai >= 75 ? 'โ
Lulus' : 'โ Remedial'}`;
console.log(pesan); // Selamat, Siti! Nilaimu 88. โ
Lulus
// Destructuring Array
const [pertama, kedua, ...sisa] = [10, 20, 30, 40];
console.log(pertama); // 10
console.log(sisa); // [30, 40]
// Destructuring Object
const siswa = { nama: "Budi", kelas: "8A", nilai: 90 };
const { nama: namaSiswa, nilai: nilaiSiswa } = siswa;
console.log(`${namaSiswa}: ${nilaiSiswa}`); // Budi: 90
5. ๐๏ธ Mini Proyek: To-Do List
Gabungkan semua yang sudah dipelajari! Buat aplikasi to-do list sederhana:
<!-- HTML -->
<input id="input-tugas" placeholder="Tambah tugas...">
<button id="btn-tambah">+ Tambah</button>
<ul id="daftar-tugas"></ul>
/* JavaScript */
const daftarTugas = [];
const tampilkanTugas = () => {
const ul = document.getElementById('daftar-tugas');
ul.innerHTML = daftarTugas.map((tugas, i) => `
<li>
${tugas.selesai ? '<s>' : ''} ${tugas.teks} ${tugas.selesai ? '</s>' : ''}
<button onclick="selesaikan(${i})">โ
</button>
<button onclick="hapus(${i})">๐๏ธ</button>
</li>
`).join('');
};
document.getElementById('btn-tambah')
.addEventListener('click', () => {
const input = document.getElementById('input-tugas');
if (input.value.trim()) {
daftarTugas.push({ teks: input.value, selesai: false });
input.value = '';
tampilkanTugas();
}
});
const selesaikan = (i) => { daftarTugas[i].selesai = true; tampilkanTugas(); };
const hapus = (i) => { daftarTugas.splice(i, 1); tampilkanTugas(); };
โ
Coba di CodePen! Copy kode di atas ke codepen.io dan langsung bisa dicoba.