Menu

Nilai Truthy dan Falsy JavaScript: Daftar Lengkapnya

Apa yang dianggap truthy dan falsy di JavaScript, daftar lengkap nilai falsy, dan bagaimana konversi ke boolean berlangsung di kode nyata.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Setiap nilai punya sifat boolean

JavaScript membolehkanmu menaruh nilai apa pun di tempat yang mengharapkan boolean: di dalam if, sebagai kondisi while, di samping && atau ||. Saat itu terjadi, nilainya dikonversi menjadi true atau false. Nilai yang dikonversi menjadi false disebut falsy. Selebihnya truthy.

Tanpa fungsi konversi, tanpa cast eksplisit: JavaScript melakukannya secara otomatis. Aturannya tetap dan sedikit, jadi begitu kamu tahu daftar falsy-nya, semua kasus lain mengikuti.

Daftar lengkap nilai falsy

Tepat delapan nilai yang falsy. Selebihnya dalam bahasa ini truthy.

Itu saja. Daftarnya:

  • false: boolean itu sendiri.
  • 0 dan -0: kedua bentuk nol.
  • 0n: nol BigInt.
  • "": string kosong (tanda kutip tunggal, ganda, atau backtick, semuanya sama).
  • null: nilai "sengaja kosong".
  • undefined: nilai "belum diatur".
  • NaN: hasil perhitungan yang tidak valid seperti 0 / 0.

Hafalkan kedelapan ini. Lalu untuk nilai apa pun yang membuatmu ragu, tanyakan: "apakah ini salah satu dari kedelapan itu?" Kalau bukan, berarti truthy.

Kejutannya: "0", [], dan {}

Di sinilah pemula sering tersandung. Banyak nilai yang terlihat kosong tapi truthy:

String hanya falsy saat panjangnya nol karakter. "0" punya satu karakter, jadi truthy. Array dan object selalu truthy, bahkan yang kosong, karena JavaScript memperlakukannya sebagai object, dan semua object truthy apa pun isinya.

Kalau kamu datang dari Python, inilah perubahan cara berpikir terbesar. Di Python, [] dan {} falsy. Di JavaScript, tidak.

Mengecek "kosong" dengan cara yang benar

Karena [] dan {} truthy, kamu tidak bisa memakainya langsung di if untuk mengecek apakah kosong. Tulis secara eksplisit:

Sama halnya dengan string, kalau kamu ingin string yang hanya berisi whitespace dianggap kosong:

Truthy/falsy adalah singkatan yang praktis, bukan pengganti untuk memikirkan apa arti "kosong" bagi datamu.

Mengubah ke boolean sungguhan

Kadang kamu ingin true atau false yang sebenarnya, bukan sekadar nilai yang kira-kira truthy. Ada dua idiom:

Boolean(x) adalah konversi eksplisit. !!x adalah hal yang sama dalam bentuk singkat: ! pertama mengonversi ke boolean dan membaliknya, ! kedua membaliknya kembali. Keduanya umum. !! lebih pendek; Boolean() lebih jelas dibaca.

Kamu akan sering melihat !! di pernyataan return saat sebuah fungsi harus mengembalikan boolean yang bersih:

Truthy/falsy dengan && dan ||

Operator logika tidak mengembalikan true atau false: mereka mengembalikan salah satu operand-nya. Mana yang dikembalikan bergantung pada sifat truthy-nya:

Itulah kenapa value || defaultValue jadi pola yang sangat umum untuk nilai default. Tapi ada jebakannya: ia memperlakukan semua nilai falsy sama, termasuk 0 dan "", yang sering kali input yang sah:

Kalau kamu hanya ingin beralih ke nilai cadangan untuk null atau undefined, pakai operator nullish coalescing ??. Itu dibahas di dokumennya sendiri.

Rujukan singkat

Cetak, tempel di monitormu, lalu lanjutkan hidupmu.

Berikutnya: iterator dan generator

Setelah kamu menguasai percabangan dan perulangan, bab berikutnya membahas bagaimana JavaScript membuat nilai bisa menghasilkan dirinya sendiri sesuai permintaan. Iterator dan generator adalah mesin di balik for...of, spread, dan banyak API modern, dan keduanya dibahas berikutnya.

Pertanyaan yang sering diajukan

Apa saja nilai falsy di JavaScript?

Tepat ada delapan: false, 0, -0, 0n (nol BigInt), '' (string kosong), null, undefined, dan NaN. Selebihnya truthy, termasuk '0', 'false', [], dan {}. Hafalkan daftar falsy yang pendek ini, dan kamu tahu jawaban untuk setiap nilai lain dengan cara eliminasi.

Apakah array kosong truthy atau falsy di JavaScript?

Truthy. if ([]) { ... } menjalankan bloknya, dan ini mengejutkan orang yang datang dari Python atau PHP. Array dan object adalah object, dan semua object truthy apa pun isinya. Untuk mengecek array kosong, pakai arr.length === 0 secara eksplisit.

Bagaimana cara mengubah sebuah nilai menjadi boolean di JavaScript?

Ada dua cara: Boolean(value) adalah bentuk eksplisitnya, dan !!value adalah singkatannya (negasi ganda yang mengonversi lalu membaliknya kembali). Keduanya mengikuti aturan truthy/falsy yang sama. Pakai saat kamu ingin true/false yang sebenarnya, bukan sekadar hasil yang kira-kira truthy.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai