Ditanyain LMS

Function & Reusability

Bayangkan Anda bekerja di sebuah restoran. Setiap kali ada pesanan "Nasi Goreng", koki tidak perlu belajar lagi dari awal cara memotong bawang atau memasak nasi. Koki sudah memiliki "resep" yang tersimpan di kepalanya. Di dunia pemrograman, resep tersebut disebut sebagai Function.

Function adalah blok kode yang dirancang untuk melakukan tugas tertentu. Kita menulis kodenya satu kali, lalu kita bisa memanggilnya (menjalankannya) berkali-kali di mana pun kita membutuhkannya. Ini membantu kita menghindari penulisan kode yang berulang-ulang (Don't Repeat Yourself atau DRY).

Apa itu Function?

Function memiliki dua fase utama:

  1. Deklarasi: Membuat resepnya (mendefinisikan apa yang dilakukan function).
  2. Invocasi (Pemanggilan): Memasak resepnya (menjalankan kodenya).
1// 1. Deklarasi Function 2function sapaDunia() { 3 console.log("Halo, selamat belajar JavaScript!"); 4} 5 6// 2. Pemanggilan Function 7sapaDunia(); 8sapaDunia();

Parameter & Return

Sebuah function akan jauh lebih berguna jika bisa menerima data masukan. Masukan ini disebut Parameter. Selain menerima masukan, function juga bisa memberikan hasil kembali ke pemanggilnya menggunakan kata kunci return.

1function hitungLuasPersegi(sisi) { 2 let luas = sisi * sisi; 3 return luas; // Mengirimkan hasil keluar dari function 4} 5 6// Kita menyimpan hasil return ke dalam variabel 7let hasil1 = hitungLuasPersegi(5); 8let hasil2 = hitungLuasPersegi(10); 9 10console.log("Luas 1: " + hasil1); // 25 11console.log("Luas 2: " + hasil2); // 100

Kenapa menggunakan return? Tanpa return, sebuah function hanya melakukan tugas di dalam dirinya sendiri tanpa memberikan laporan hasil. Ibarat menyuruh seseorang menghitung belanjaan, tapi dia hanya menghitung di kepala tanpa memberi tahu Anda total harganya. Dengan return, nilai tersebut bisa kita olah kembali atau kita simpan ke variabel.

Function Declaration vs Expression

Ada dua cara umum untuk menulis function:

  1. Declaration: Cara klasik menggunakan kata kunci function di awal.
  2. Expression: Menyimpan function di dalam sebuah variabel.
1// Function Declaration 2function tambah(a, b) { 3 return a + b; 4} 5 6// Function Expression 7const kurang = function (a, b) { 8 return a - b; 9}; 10 11console.log(tambah(10, 5)); // 15 12console.log(kurang(10, 5)); // 5

Arrow Function (ES6+)

Di JavaScript modern, kita sering menggunakan Arrow Function. Sintaks ini lebih ringkas dan sangat populer dalam pengembangan aplikasi saat ini.

1const kali = (a, b) => { 2 return a * b; 3}; 4 5// Jika hanya satu baris, bisa lebih singkat lagi (implicit return) 6const bagi = (a, b) => a / b; 7 8console.log(kali(4, 3)); // 12 9console.log(bagi(20, 4)); // 5

Scope dalam Function

Hati-hati dengan variabel yang Anda buat di dalam function. Variabel tersebut bersifat Local Scope, artinya ia hanya dikenal di dalam function tersebut dan "mati" setelah function selesai dijalankan.

1let namaGlobal = "Budi"; // Bisa diakses di mana saja 2 3function testScope() { 4 let namaLokal = "Andi"; 5 console.log(namaGlobal); // Bisa akses global 6 console.log(namaLokal); // Bisa akses lokal 7} 8 9testScope(); 10console.log(namaGlobal); // Berhasil 11// console.log(namaLokal); // ERROR: namaLokal is not defined

Kesalahan Umum Pemula: Mencoba memanggil variabel yang dibuat di dalam function dari luar function. Jika Anda butuh nilai tersebut di luar, gunakanlah return.

Studi Kasus: Validasi Login

Mari kita gabungkan function, parameter, dan conditional.

1function cekLogin(user, pass) { 2 const userValid = "admin"; 3 const passValid = "rahasia123"; 4 5 if (user === userValid && pass === passValid) { 6 return "Akses diterima. Selamat datang!"; 7 } else { 8 return "Akses ditolak. Username atau password salah."; 9 } 10} 11 12console.log(cekLogin("admin", "rahasia123")); // Berhasil 13console.log(cekLogin("hacker", "12345")); // Gagal

Alur Eksekusi:

  1. Function cekLogin menerima dua input (user dan pass).
  2. Di dalam function, input tersebut dibandingkan dengan data valid menggunakan operator &&.
  3. Jika cocok, function berhenti dan mengirimkan string "Akses diterima...".
  4. Jika tidak cocok, ia mengirimkan string "Akses ditolak...".

Prediksi Output: Apa yang terjadi jika kita memanggil console.log(cekLogin("admin", "salah"));? Karena syarat && mewajibkan keduanya benar, dan pass yang dimasukkan tidak cocok, maka blok else akan dijalankan dan menghasilkan "Akses ditolak...".