Conditional & Decision Making
Setelah kita belajar cara membandingkan nilai di section sebelumnya, sekarang kita akan belajar bagaimana menggunakan hasil perbandingan tersebut untuk menentukan arah jalannya program. Dalam pemrograman, ini disebut Control Flow. Tanpa conditional, kode kita akan selalu berjalan lurus dari atas ke bawah. Dengan conditional, kode kita bisa "berbelok" atau melompati bagian tertentu berdasarkan situasi yang terjadi.
Konsep Conditional: If, Else If, dan Else
Struktur if adalah cara paling dasar untuk membuat keputusan. Bayangkan seperti sebuah gerbang: jika syaratnya terpenuhi (true), Anda boleh masuk dan menjalankan perintah di dalamnya. Jika tidak (false), gerbang akan tertutup.
1let nilai = 75;
2
3if (nilai >= 70) {
4 console.log("Selamat, Anda lulus!");
5} else {
6 console.log("Maaf, silakan coba lagi tahun depan.");
7}Alur Eksekusi:
- JavaScript mengevaluasi kondisi di dalam kurung:
75 >= 70. Hasilnya adalahtrue. - Karena
true, blok kode di dalam kurung kurawal{}pertama dijalankan. - Bagian
elsediabaikan sepenuhnya.
Jika Anda memiliki lebih dari dua kemungkinan, kita bisa menggunakan else if.
1let jam = 14;
2
3if (jam < 12) {
4 console.log("Selamat Pagi");
5} else if (jam < 18) {
6 console.log("Selamat Siang");
7} else {
8 console.log("Selamat Malam");
9}Kenapa hasilnya "Selamat Siang"?
JavaScript mengecek dari atas. 14 < 12 adalah false, maka ia lanjut ke else if. Karena 14 < 18 adalah true, maka pesan "Selamat Siang" dicetak. Setelah satu kondisi terpenuhi, JavaScript akan keluar dari seluruh rangkaian if-else tersebut dan tidak akan mengecek kondisi di bawahnya lagi.
Ternary Operator
Untuk keputusan sederhana yang hanya memiliki dua pilihan, kita bisa menggunakan cara singkat bernama Ternary Operator. Ini sering digunakan untuk menentukan nilai sebuah variabel secara cepat.
Sintaksnya adalah: kondisi ? hasil_jika_true : hasil_jika_false.
1let usia = 18;
2let statusPenyewa = usia >= 17 ? "Boleh menyewa motor" : "Belum cukup umur";
3
4console.log(statusPenyewa);Kesalahan Umum: Pemula sering mencoba memasukkan logika yang sangat kompleks ke dalam ternary operator. Jika logikanya sudah melibatkan banyak else if, gunakanlah if-else biasa agar kode tetap mudah dibaca oleh manusia.
Switch Case
Jika Anda memiliki satu variabel yang ingin dibandingkan dengan banyak nilai spesifik (seperti menu pilihan atau nama hari), switch adalah pilihan yang lebih rapi daripada menumpuk banyak else if.
1let hari = "Senin";
2
3switch (hari) {
4 case "Senin":
5 console.log("Waktunya bekerja!");
6 break;
7 case "Sabtu":
8 case "Minggu":
9 console.log("Waktunya libur!");
10 break;
11 default:
12 console.log("Hari biasa.");
13}Pentingnya break: Tanpa kata kunci break, JavaScript akan terus menjalankan kode ke baris bawahnya meskipun kondisinya sudah tidak cocok (kejadian ini disebut fall-through). Perhatikan pada "Sabtu" dan "Minggu"; karena tidak ada break di antara keduanya, mereka akan menjalankan perintah yang sama.
Nested Conditional (Kondisi Bersarang)
Kadang, sebuah keputusan bergantung pada keputusan lainnya. Ini disebut nesting.
1let username = "admin";
2let password = "123";
3
4if (username === "admin") {
5 if (password === "123") {
6 console.log("Login Berhasil!");
7 } else {
8 console.log("Password Salah!");
9 }
10} else {
11 console.log("User tidak ditemukan!");
12}Studi Kasus: Sistem Penilaian Mari kita gabungkan operator logika dari Section 3 dengan conditional.
1let nilaiUjian = 85;
2let kehadiran = 90;
3
4if (nilaiUjian >= 80 && kehadiran >= 80) {
5 console.log("Predikat: A");
6} else if (nilaiUjian >= 60 || kehadiran >= 70) {
7 console.log("Predikat: B");
8} else {
9 console.log("Predikat: C");
10}Prediksi Output:
Apa yang terjadi jika nilaiUjian adalah 50 dan kehadiran adalah 85?
- Kondisi pertama (
50 >= 80 && 85 >= 80) menghasilkanfalse. - Kondisi kedua (
50 >= 60 || 85 >= 70) menghasilkantrue(karena salah satu benar). - Hasil akhirnya adalah "Predikat: B".