Ketika kita pertama kali mempelajari suatu hal, sering kali kita mencari sebuah perumpamaan dari hal yang kita ketahui, kemudian kita hubungkan dengan apa yang dipelajari.
Pada tahap awal, menurut saya ini memang diperlukan, dan bahkan bukan suatu hal yang bisa kita kendalikan. Akan tetapi, perlu diingat bahwa perumpamaan yang kita gunakan bisa jadi tidaklah sama persis dengan kenyataannya.
Sebagai contoh, saat awal belajar pemrograman, saya melihat di dalam if
adalah sebuah "kondisi" dengan format perbandingan antara dua hal, jika dia benar, maka kode di dalamnya akan jalan.
// 1 tidak sama dengan 2, benar!
if (1 != 2) {
console.log('Halo!')
}
Ketika dihadapkan hal yang sesuai dengan apa yang saya tangkap, tidak ada masalah, saya bisa memahami beberapa penggunaan if
lainnya.
// Jika nama = bambang, maka akan jalan!
if (nama == 'Bambang') {
console.log('Nama kamu Bambang!');
}
Namun, hal ini jadi masalah ketika if
ini diisi dengan hal lain. Misalnya, diisi sebuah teks dan angka.
// Loh, ini kan bukan "kondisi", kok jalan??
if (2 && 'a') {
console.log('A');
}
// Ini diisi angka dan huruf juga, tapi kok ga jalan??
if (0 && 'b') {
console.log('B');
}
Ternyata, setelah saya belajar lebih lanjut, yang sebenarnya dibaca oleh komputer bukan lah sebuah teks "kondisi" dengan format perbandingan dua hal, melainkan sebuah jenis data boolean
yang nilainya antara true
atau false
.
Jika true
, maka dia baru jalan. Dan true
/false
ini pun juga bisa kita pakai tanpa menulis sebuah "kondisi"!
if (true) {
console.log('Jalan!');
}
Tapi, kalau harus boolean
yang mana antara true
atau false
, lalu kenapa 1 != 2
tadi bisa jalan?
Ternyata saya temui lagi, ketika kita coba mencetak "kondisi", nanti secara otomatis akan dikonversi menjadi sebuah boolean
!
console.log(1 != 2);
// Output: true
Lalu, bagaimana untuk kasus huruf dan angka tadi? Kan ketika kita cetak, mereka tidak jadi boolean
?
Benar, namun jika ditelusuri lebih lanjut, dalam Javascript, ada konsep nilai truthy dan falsy, yang artinya kita bisa menggunakan nilai non-boolean
untuk hal-hal yang diisi boolean
, seperti if
tadi.
Untuk mengetahui bagaimana suatu nilai non-boolean
itu truthy (true
) atau falsy (false
), saya menggunakan bantuan function Boolean()
bawaan Javascript untuk mengkonversinya ke bentuk boolean
.
console.log(Boolean(2));
// Output: true
console.log(Boolean(0));
// Output: false
console.log(Boolean('a'));
// Output: true
Sejak saat itu saya mulai menyadari bahwa saat belajar, sebisa mungkin hindarilah asumsi-asumsi yang kamu dapat dari perumpamaan, dan segeralah berusaha untuk mencari referensi lebih banyak agar bisa mendapat pemahaman yang sebenar-benarnya.
Discussion