JS:// Bengkel

Materi Privat — Bagian 2

JavaScript
Lanjutan

Lima stasiun kerja, lima alat baru untuk kotak perkakasmu. Tiap stasiun punya teori, contoh, dan latihan sendiri — kerjakan berurutan atau loncat sesuai kebutuhan.

0 / 25 latihan selesai

Stasiun 2.1 — Alat: Mesin Kopi Otomatis

Fungsi (Functions)

Teori

Fungsi adalah blok kode yang bisa dipanggil berulang kali untuk menjalankan tugas tertentu, tanpa harus menulis ulang kodenya. Fungsi bisa menerima input (parameter) dan mengembalikan output (return value).

Ada 3 cara umum menulis fungsi di JS:

// 1. Function Declaration
function sapa(nama) {
  return `Halo, ${nama}!`;
}

// 2. Function Expression
const sapa2 = function (nama) {
  return `Halo, ${nama}!`;
};

// 3. Arrow Function (paling sering dipakai di kode modern)
const sapa3 = (nama) => {
  return `Halo, ${nama}!`;
};

// Arrow function singkat (implicit return)
const sapa4 = (nama) => `Halo, ${nama}!`;

Konsep

  • Parameter = variabel yang didefinisikan di fungsi, tempat "menampung" nilai yang dikirim.
  • Argument = nilai asli yang dikirim saat memanggil fungsi.
  • Return = nilai yang dikeluarkan fungsi, bisa ditampung di variabel lain.
  • Fungsi tanpa return otomatis menghasilkan undefined.

Analogi

Fungsi itu kayak mesin kopi otomatis. Kamu masukkan bahan (parameter: air, kopi, gula), pencet tombol (panggil fungsi), mesin memproses di dalam (isi fungsi), dan keluar secangkir kopi jadi (return value). Mesinnya bisa dipakai berkali-kali dengan bahan berbeda-beda, tanpa perlu bikin mesin baru tiap kali mau ngopi.

Contoh Penggunaan Nyata

Menghitung total harga belanja dengan diskon:

function hitungTotal(harga, diskonPersen) {
  const potongan = harga * (diskonPersen / 100);
  return harga - potongan;
}

console.log(hitungTotal(100000, 10)); // 90000

Latihan

0/5

Stasiun 2.2 — Alat: Antrean Kasir Minimarket

Array

Teori

Array adalah struktur data untuk menyimpan banyak nilai dalam satu variabel, berurutan berdasarkan index (dimulai dari 0). JavaScript modern punya banyak method bawaan untuk mengolah array tanpa perlu loop manual (for).

Method yang paling penting untuk dikuasai:

  • .forEach() → menjalankan fungsi untuk setiap elemen (tidak menghasilkan array baru).
  • .map() → membuat array baru hasil transformasi tiap elemen.
  • .filter() → membuat array baru berisi elemen yang lolos kondisi tertentu.
  • .reduce() → "meringkas" seluruh array jadi satu nilai (misal total, rata-rata).
  • .find() → mencari satu elemen pertama yang cocok dengan kondisi.

Konsep

const angka = [1, 2, 3, 4, 5];

angka.forEach(n => console.log(n));

const dobel = angka.map(n => n * 2);          // [2, 4, 6, 8, 10]
const genap = angka.filter(n => n % 2 === 0); // [2, 4]
const total = angka.reduce((acc, n) => acc + n, 0); // 15
const ketemu = angka.find(n => n > 3);        // 4

Analogi

Array itu kayak daftar antrean di kasir minimarket. .forEach itu kamu jalan ke tiap orang di antrean dan ngobrol sebentar (tanpa hasil baru). .map itu kamu foto tiap orang lalu edit fotonya jadi kartun — hasilnya album foto baru, orang aslinya nggak berubah. .filter itu kamu pilih cuma orang yang bawa payung — hasilnya daftar baru yang lebih pendek. .reduce itu kamu hitung total uang belanja semua orang di antrean jadi satu angka.

Contoh Penggunaan Nyata

Menampilkan daftar produk dan menghitung total harga keranjang belanja:

const keranjang = [
  { nama: 'Kopi', harga: 25000 },
  { nama: 'Roti', harga: 15000 },
  { nama: 'Susu', harga: 20000 },
];

const totalBelanja = keranjang.reduce((acc, item) => acc + item.harga, 0);
console.log(totalBelanja); // 60000

const namaProduk = keranjang.map(item => item.nama);
console.log(namaProduk); // ['Kopi', 'Roti', 'Susu']

Latihan

0/5

Stasiun 2.3 — Alat: KTP Satu Orang

Objek (Objects)

Teori

Objek digunakan untuk menyimpan data yang berkaitan dalam bentuk pasangan key: value. Kalau array cocok untuk daftar data sejenis (semua angka, semua string), objek cocok untuk menggambarkan satu entitas dengan banyak atribut — misalnya satu user, satu produk, satu mobil.

Konsep

const user = {
  nama: 'Zain',
  umur: 25,
  kota: 'Jakarta',
  sapa: function () {
    return `Halo, saya ${this.nama}`;
  }
};

console.log(user.nama);        // akses pakai dot notation
console.log(user['kota']);     // akses pakai bracket notation
console.log(user.sapa());      // panggil method di dalam objek

// Destructuring — ambil beberapa properti sekaligus
const { nama, kota } = user;
console.log(nama, kota);

this di dalam method objek merujuk ke objek itu sendiri.

Analogi

Kalau array itu kayak daftar antrean orang yang mirip-mirip, objek itu kayak KTP satu orang. Di KTP ada banyak informasi berbeda jenis tapi semuanya tentang satu orang yang sama: nama, alamat, tanggal lahir. Kamu nggak bakal simpan alamat orang di array terpisah dari namanya — semuanya nyatu dalam satu "kartu" (objek).

Contoh Penggunaan Nyata

Menyimpan data profil user yang didapat dari form pendaftaran:

const pendaftar = {
  nama: document.querySelector('#nama').value,
  email: document.querySelector('#email').value,
  status: 'belum diverifikasi',
};

console.log(`${pendaftar.nama} mendaftar dengan email ${pendaftar.email}`);

Array of objects untuk data tabel di dashboard (kombinasi array + objek — sering banget dipakai bareng):

const siswa = [
  { nama: 'Andi', nilai: 88 },
  { nama: 'Sari', nilai: 92 },
];

Latihan

0/5

Stasiun 2.4 — Alat: Nota Laundry Kiloan

Callback

Teori

Callback adalah fungsi yang dikirim sebagai argument ke fungsi lain, lalu dipanggil (di-"call back") di dalam fungsi tersebut — biasanya setelah suatu proses selesai. Konsep ini adalah fondasi penting sebelum belajar Promise dan async/await.

Konsep

function proses(nama, callback) {
  console.log(`Memproses ${nama}...`);
  callback();
}

proses('Data User', function () {
  console.log('Selesai diproses!');
});

// Method array yang sudah dipelajari (map, filter, forEach)
// sebenarnya semuanya menerima callback sebagai argument!
[1, 2, 3].forEach(function (angka) {
  console.log(angka);
});

// Callback sering dipakai untuk hal yang butuh waktu (asynchronous)
setTimeout(() => {
  console.log('Muncul setelah 2 detik');
}, 2000);

Analogi

Callback itu kayak kamu titip cucian ke laundry kiloan dan bilang: "Kalau udah selesai, telepon nomor ini ya (callback)." Kamu nggak nungguin di depan mesin cuci. Kamu pergi kerja dulu, dan laundry-nya bakal "menelepon balik" (memanggil fungsi callback) begitu cucian selesai — bukan kamu yang harus terus-terusan ngecek.

Contoh Penggunaan Nyata

Menjalankan animasi setelah data selesai dimuat, atau validasi setelah user berhenti mengetik (debounce) — semuanya berbasis callback. Contoh sederhana loading data dummy:

function ambilData(callback) {
  setTimeout(() => {
    const data = { nama: 'Produk A', harga: 50000 };
    callback(data);
  }, 1000);
}

ambilData(function (data) {
  console.log('Data diterima:', data.nama);
});

Latihan

0/5

Stasiun 2.5 — Alat: Aplikasi Ojek Online

Fetch API Dasar

Teori

fetch() adalah fungsi bawaan JavaScript untuk mengambil data dari server/API lewat internet, tanpa perlu reload halaman. Ini yang bikin website bisa nampilin data real-time seperti cuaca, harga saham, atau daftar produk dari database.

fetch() bersifat asynchronous (butuh waktu, tidak langsung selesai), makanya dipakai bareng .then() atau async/await.

Konsep

// Cara 1: pakai .then()
fetch('https://api.example.com/produk')
  .then(response => response.json()) // ubah response jadi JSON
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Gagal ambil data:', error);
  });

// Cara 2: pakai async/await (lebih rapi, sering dipakai)
async function ambilProduk() {
  try {
    const response = await fetch('https://api.example.com/produk');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Gagal ambil data:', error);
  }
}

ambilProduk();

Analogi

fetch() itu kayak kamu pesan makanan lewat aplikasi ojek online. Kamu order (panggil fetch), lalu nunggu (asynchronous — kamu tetap bisa ngapain aja sambil nunggu), dan begitu makanannya sampai, kamu buka bungkusnya (.json()) untuk lihat isinya (data). Kalau driver-nya nyasar atau resto tutup, ada notifikasi gagal (.catch() / try-catch) — bukan aplikasinya yang crash.

Contoh Penggunaan Nyata

Menampilkan daftar postingan dari API publik ke dalam halaman HTML:

async function tampilkanPostingan() {
  const container = document.querySelector('#daftarPostingan');
  const response = await fetch('https://jsonplaceholder.typicode.com/posts');
  const data = await response.json();

  data.slice(0, 5).forEach(post => {
    const p = document.createElement('p');
    p.textContent = post.title;
    container.appendChild(p);
  });
}

tampilkanPostingan();

Ini contoh nyata gabungan semua materi hari ini: querySelector (ambil container), fetch (ambil data), forEach + createElement (loop dan bikin elemen baru), dan mengubah HTML (appendChild).

Latihan

0/5