Tujuan Belajar
Setelah pelajaran ini, kamu akan bisa:
- Membuat function dengan
functionkeyword - Menggunakan parameter dan return value
- Membuat arrow function
- Memahami mengapa function itu penting
Materi Singkat
Bayangkan kamu punya resep memasak mie instan. Setiap kali lapar, kamu tidak perlu menemukan cara baru memasak mie — kamu cukup ikuti resep yang sama. Function di JavaScript persis seperti resep: tulis sekali, pakai berkali-kali.
Kenapa Function Penting?
Tanpa function:
// Hitung luas lingkaran A
const luasA = 3.14 * 5 * 5;
// Hitung luas lingkaran B — harus tulis ulang!
const luasB = 3.14 * 7 * 7;Dengan function:
function luasLingkaran(jariJari) {
return 3.14 * jariJari * jariJari;
}
const luasA = luasLingkaran(5); // panggil sekali
const luasB = luasLingkaran(7); // panggil lagiMembuat Function
function namafFunction(parameter1, parameter2) {
// kode di sini
return hasilnya;
}Contoh:
function sapa(nama) {
return `Halo, ${nama}! Selamat datang.`;
}
// Panggil function
const pesan = sapa("Budi");
console.log(pesan); // "Halo, Budi! Selamat datang."
console.log(sapa("Siti")); // "Halo, Siti! Selamat datang."Parameter dan Argumen
- Parameter — nama placeholder di definisi function
- Argumen — nilai nyata yang dikirim saat memanggil function
// nama dan umur adalah parameter
function perkenalan(nama, umur) {
return `Nama saya ${nama}, berumur ${umur} tahun.`;
}
// "Budi" dan 21 adalah argumen
console.log(perkenalan("Budi", 21));Default Parameter
function sapa(nama, sapaan = "Halo") {
return `${sapaan}, ${nama}!`;
}
console.log(sapa("Budi")); // "Halo, Budi!"
console.log(sapa("Siti", "Selamat pagi")); // "Selamat pagi, Siti!"Return Value
return mengembalikan nilai dari function. Setelah return, function berhenti:
function hitungLuas(panjang, lebar) {
const luas = panjang * lebar;
return luas;
// kode di bawah ini tidak akan dijalankan
}
const hasilLuas = hitungLuas(5, 3);
console.log(hasilLuas); // 15Function tanpa return mengembalikan undefined.
Arrow Function
Cara menulis function yang lebih singkat (ES6+):
// Function biasa
function tambah(a, b) {
return a + b;
}
// Arrow function
const tambah = (a, b) => {
return a + b;
};
// Arrow function singkat (satu ekspresi)
const tambah = (a, b) => a + b;
// Satu parameter, tanpa kurung
const kuadrat = x => x * x;Contoh Kode
// Kalkulator sederhana
function tambah(a, b) { return a + b; }
function kurang(a, b) { return a - b; }
function kali(a, b) { return a * b; }
function bagi(a, b) {
if (b === 0) return "Error: tidak bisa dibagi nol";
return a / b;
}
console.log(`10 + 3 = ${tambah(10, 3)}`);
console.log(`10 - 3 = ${kurang(10, 3)}`);
console.log(`10 × 3 = ${kali(10, 3)}`);
console.log(`10 ÷ 3 = ${bagi(10, 3).toFixed(2)}`);
console.log(`10 ÷ 0 = ${bagi(10, 0)}`);
// Function yang lebih kompleks
function gradeToHuruf(nilai) {
if (nilai >= 90) return "A";
if (nilai >= 80) return "B";
if (nilai >= 70) return "C";
if (nilai >= 60) return "D";
return "E";
}
function cetakLaporanNilai(nama, nilai) {
const huruf = gradeToHuruf(nilai);
const lulus = nilai >= 70;
const status = lulus ? "✓ Lulus" : "✗ Tidak Lulus";
console.log(`${nama}: ${nilai} (${huruf}) — ${status}`);
}
cetakLaporanNilai("Andi", 92);
cetakLaporanNilai("Budi", 78);
cetakLaporanNilai("Citra", 65);
// Arrow function untuk konversi
const celsiusKeFahrenheit = c => (c * 9/5) + 32;
const fahrenheitKeCelsius = f => (f - 32) * 5/9;
console.log(`30°C = ${celsiusKeFahrenheit(30)}°F`);
console.log(`98.6°F = ${fahrenheitKeCelsius(98.6).toFixed(1)}°C`);Tugas Kecil
Buat beberapa function berguna:
function hitungLuasSegitiga(alas, tinggi)— kembalikan luas segitiga (alas × tinggi / 2)function hitungKeliling(panjang, lebar)— kembalikan keliling persegi panjangfunction tentikanBMI(berat, tinggi)— hitung BMI dan kembalikan kategori ("Kurang", "Normal", "Berlebih", "Obesitas")function ucapkanSelamat(nama, nilai)— jika nilai >= 70, kembalikan "Selamat [nama], kamu lulus dengan nilai [nilai]!"; jika tidak, kembalikan "Semangat [nama], coba lagi!"- Panggil setiap function minimal dua kali dengan nilai yang berbeda dan cetak hasilnya