Fungsi — JavaScript

Coba bayangin masak bakso: cuci bahan, potong, didihin, taro mie, masukin bakso, sajiin. Lima langkah yang harus diulang tiap mau masak. Daripada nulis ulang…

Fungsi adalah blok kode bernama yang bisa dipanggil berulang kali. Kamu kirim masukan, fungsi mengerjakan sesuatu, lalu mengembalikan hasilnya. Kayak blender: masukkan buah, keluar jus, dan blender yang sama bisa dipakai buat buah apa saja.

🧪 Tebakan cepat: sebuah fungsi gak punya return. Kalau dipanggil, hasilnya apa? Tebak dulu, jawabannya ada di bagian "return: mengembalikan hasil".

Bikin dan memanggil fungsi

function salam(nama) {
  return "Selamat pagi, " + nama + "!";
}

console.log(salam("Budi")); // Selamat pagi, Budi!
console.log(salam("Sari")); // Selamat pagi, Sari!

Menulis fungsi belum menjalankannya. Kodenya baru jalan waktu dipanggil, dengan nama fungsi dan tanda kurung. Panggil lagi dengan "Sari", hasilnya ikut berubah: mesinnya sama, masukannya beda.

return: mengembalikan hasil

function kali(a, b) {
  return a * b;
}

const hasil = kali(3, 5);
console.log(hasil); // 15

Jawaban tebakan: fungsi tanpa return mengembalikan undefined. Hati-hati, console.log di dalam fungsi cuma mencetak ke console, gak mengembalikan apa-apa. Di latihan, yang dinilai adalah nilai yang dikembalikan, jadi selalu pakai return.

Cara lain menulis fungsi

function nama() { ... } adalah cara tradisional. Fungsi juga bisa disimpan di variabel, termasuk dalam bentuk pendek bernama arrow function (=>):

const salam2 = function (nama) {
  return "Halo, " + nama;
};

const kaliDua = (n) => n * 2;
const kaliTiga = (n) => { n * 3; };

console.log(kaliDua(4));  // 8
console.log(kaliTiga(4)); // undefined

Arrow function dibahas lebih lengkap di lesson berikutnya.

⚠️ Jebakan yang sering ketemu

TL;DR: Fungsi dibuat dengan function nama(parameter) { ... } dan baru jalan waktu dipanggil, misalnya salam("Budi"). Argumen yang dikirim masuk ke parameter sesuai urutan. return mengembalikan hasil dan menghentikan fungsi. Tanpa return hasilnya undefined, dan console.log gak bisa menggantikannya. Arrow function (n) => n * 2 mengembalikan hasilnya langsung, tapi begitu pakai { } harus ada return.

Yang akan kamu pelajari