Bagaimana saya bisa memeriksa apakah tipe variabel adalah tipe Boolean?
Maksud saya, ada beberapa alternatif seperti:
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
Tetapi bagi saya itu tidak terlihat bagus.
Apakah ada cara yang lebih bersih untuk mencapai ini?
javascript
jquery
types
Matias Cicero
sumber
sumber
true
ataufalse
tipe Boolean?!!( ... some expression ...)
dan hasilnya akan menjadi boolean.true
danfalse
merupakan tipe primitifboolean
. Tipe kapital-B Boolean adalah tipe pembungkus objek untuk primitif boolean.if (new Boolean(false)) alert("hi");
- objek Boolean kapital-B selalu "benar", terlepas dari nilai boolean kecil-b yang mendasarinya.Jawaban:
Itulah gunanya
typeof
. Tanda kurung bersifat opsional karena merupakan operator .sumber
typeof
.typeof
bukan fungsi. 2) Menggunakan operator triple === dengantypeof
tidak diperlukan, karena akan selalu mengembalikan string (afaik, tapi sejauh yang saya ingat, ada kasus lain untuk beberapa browser yang sangat lama). 3)typeof
dan perbandingan string lambat. Jangan gunakan itu. Periksa langsung dengan(variable === true || variable === false)
(saya sarankan untuk menulis fungsi).typeof(variable) === typeof(true)
akan lebih kuat?name
adalah properti jendela global dengan spesial getter developer.mozilla.org/en-US/docs/Web/API/Window/nametypeof true
daripada"boolean"
. Versi baru ECMAScript tidak akan pernah memiliki perubahan apa pun.Jika Anda hanya ingin memeriksa nilai primitif
Jika karena alasan aneh Anda memiliki boolean yang dibuat dengan konstruktor, itu bukan boolean tetapi objek yang mengandung nilai boolean primitif, dan salah satu cara untuk memeriksa boolean primitif dan objek yang dibuat
new Boolean
adalah dengan melakukan:Tampilkan cuplikan kode
sumber
new Boolean()
, yang secara teknis bukan boolean, tetapi objek, tetapi masih memegang nilai boolean.new Boolean()
mengembalikan objek (lihat komentar pada pertanyaan). Tapi apa pun :)typeof variable === typeof new Boolean()
dan mungkin hanya ingin pemeriksaan typeof biasa, tetapi entah bagaimana terjebak dalam beberapa sintaks jQuery yang aneh sebagai gantinya.bool
param lewat di itunull
yangtypeof bool === 'object'
masih akan mengevaluasi danTypeError: Cannot read property 'valueOf' of null
pengecualian akan dilemparkan pada panggilan untuktypeof bool.valueOf()
. Jadi, saya akan mengubah baris terakhir untuk membaca:(typeof bool === 'object' && bool && typeof bool.valueOf() === 'boolean');
yang akan mengevaluasi hanya ketikabool
adalah tidak nol.Dengan JavaScript murni , Anda cukup menggunakan
typeof
dan melakukan sesuatu sepertitypeof false
atautypeof true
dan itu akan kembali"boolean"
...Tapi itu bukan satu-satunya cara untuk melakukan itu, saya membuat fungsi di bawah ini untuk menunjukkan berbagai cara Anda dapat memeriksa Boolean dalam JavaScript, juga berbagai cara yang dapat Anda lakukan dalam beberapa kerangka kerja baru, mari kita mulai dengan yang ini:
Atau satu cara ES6 ...
dan menyebutnya seperti!
Juga dalam kode sumber Garis Bawah mereka memeriksanya seperti ini (dengan _. Di awal nama fungsi):
Juga di jQuery Anda dapat memeriksanya seperti ini:
Di Bereaksi , jika menggunakan propTypes, Anda dapat memeriksa nilai menjadi boolean seperti ini:
Jika menggunakan TypeScript , Anda dapat menggunakan tipe boolean juga:
Juga cara lain untuk melakukannya, seperti mengubah nilai menjadi boolean dan melihat apakah masih sama persis, sesuatu seperti:
atau seperti:
dan sebut saja!
Tidak disarankan menggunakan kerangka apa pun untuk ini karena ini benar-benar pemeriksaan sederhana dalam JavaScript.
sumber
new Boolean(true) === new Boolean(true)
harus mengembalikan false (karena referensi berbeda). Itu sebabnya suratisBoolean(new Boolean(true))
wasiat itu mengatakan false sementara itu pasti benar (new Boolean(true)
adalah tipe boolean ).Ada tiga cara "vanilla" untuk memeriksanya dengan atau tanpa jQuery.
Pertama adalah memaksa evaluasi boolean dengan paksaan, lalu periksa apakah itu sama dengan nilai asli:
Melakukan pemeriksaan sederhana
typeof
:Melakukan pemborosan kelas yang sepenuhnya berlebihan dan tidak perlu pada primatif:
Yang ketiga hanya akan kembali
true
jika Anda membuatnew Boolean
kelas dan meneruskannya.Untuk menguraikan paksaan primitif (seperti yang ditunjukkan dalam # 1), semua tipe primitif dapat diperiksa dengan cara ini:
Boolean
:Number
:String
:sumber
typeof
? Saya sangat meragukannya.typeof
juga 1 paksaan, tetapitypeof
metode ini melakukan beberapa getter dan perbandingan di dalam +1 perbandingan di bagian paling akhir. Inilah referensi V8 untuktypeof
!!
lebih cepat, satu kataBoolean
lebih cepat. Hanya referensi seberapa kecil delta di antara tes. Cek Boolean cepat. jsperf.com/bool-not-not jsperf.com/bool-vs-doublenottypeof val === "boolean"
adalah optimal.Anda dapat menggunakan Javascript murni untuk mencapai ini:
sumber
Jika Anda ingin fungsi Anda dapat memvalidasi objek boolean juga, solusi yang paling efisien adalah:
sumber
Cara paling dapat diandalkan untuk memeriksa jenis variabel dalam JavaScript adalah sebagai berikut :
Alasan untuk komplikasi ini adalah
typeof true
pengembalian"boolean"
sementaratypeof new Boolean(true)
pengembalian"object"
.sumber
"boolean"
jika nilainya benar-benar objek? Bagi saya itu tidak terlalu praktis. Objek Boolean harus ditangani secara berbeda dari primitif Boolean.Saya akan pergi dengan Lodash: isBoolean memeriksa apakah variabel yang lewat adalah boolean primitif atau objek wrapper Boolean dan dengan demikian menyumbang semua kasus.
sumber
Anda dapat membuat fungsi yang memeriksa
typeof
argumen.sumber
Terkadang kita membutuhkan satu cara untuk memeriksanya. typeof tidak berfungsi untuk kencan dll. Jadi saya membuatnya mudah
Juga untuk
Number
,String
,Boolean
dll kita sering perlu untuk memeriksa jenis dengan cara tunggal ...sumber
Membuat fungsi seperti
isBoolean
yang berisi onelinertypeof v === "boolean"
sepertinya sangat tidak nyaman dalam jangka panjang. Saya terkejut bahwa hampir semua orang menyarankan untuk membuat fungsi Anda sendiri. Sepertinya kanker yang sama dengan memperluas prototipe asli.hanya memoize
typeof v === "boolean"
dan itu saja. Tambahkan templat ke IDE Anda untuk membuatnya dengan tiga shortcut huruf dan berbahagialah.sumber
v === true || v === false
, yang melakukan 2 verifikasi dalam kasusfalse
. Peringkat: (1 - keduanya sama praticaly)typeof v === 'boolean
dantypeof v === typeof true
, (2)isBoolean(v)
, (3)v === true || v === false
.jika Anda memiliki string
sumber
val === false || val === true
.typeof variable == typeof true
.Yang terpendek, tetapi tidak dapat dibaca sama sekali:
!!val === val
.Penjelasan:
Tes:
sumber
Dalam nodejs dengan menggunakan node-boolify kita bisa menggunakan isBoolean ();
sumber
Satu keputusan lagi dengan fungsi panah es2015
sumber