Hari 6: Fungsi — Declaration, Expression & Arrow
65 min
Last updated 09 Apr 2026
Tiga Cara Menulis Fungsi
// 1. Function Declaration (hoisted)
function tambah(a, b) {
return a + b;
}
// 2. Function Expression
const kurang = function(a, b) {
return a - b;
};
// 3. Arrow Function (ringkas, modern)
const kali = (a, b) => a * b;
const kuadrat = x => x * x; // satu param: tanpa kurung
const salam = () => "Halo!"; // tanpa param
Parameter Default & Rest
// Default parameter
function sapa(nama = "Tamu", sapaan = "Halo") {
return `${sapaan}, ${nama}!`;
}
sapa(); // "Halo, Tamu!"
sapa("Budi"); // "Halo, Budi!"
sapa("Sari", "Selamat pagi"); // "Selamat pagi, Sari!"
// Rest parameter (...args)
function jumlahkan(nama, ...angka) {
const total = angka.reduce((a, b) => a + b, 0);
return `${nama}: ${total}`;
}
jumlahkan("Total", 1, 2, 3, 4, 5); // "Total: 15"
Higher-Order Functions
// Fungsi yang menerima fungsi lain sebagai argument
function terapkan(arr, fn) {
return arr.map(fn);
}
const hasil = terapkan([1,2,3,4,5], x => x * 10);
// [10, 20, 30, 40, 50]
// Fungsi yang return fungsi (closure)
function pembuat_pengali(faktor) {
return x => x * faktor;
}
const kali3 = pembuat_pengali(3);
const kali10 = pembuat_pengali(10);
console.log(kali3(7)); // 21
console.log(kali10(5)); // 50
💡
Notice: Pipeline pattern: output satu fungsi menjadi input fungsi berikutnya. reduce menerapkan setiap fungsi ke accumulator.
Assignment
Buat fungsi pipeline(value, ...fns) yang menerapkan setiap fungsi secara berurutan ke value. Coba: pipeline(5, x => x*2, x => x+3, x => x**2). Tampilkan hasilnya.
Expected output:
169
JS
script.js
Solution
Output