Ini adalah pertanyaan yang sangat mendasar benar-benar hanya untuk memuaskan keingintahuan saya, tetapi apakah ada cara untuk melakukan sesuatu seperti ini:
if(obj !instanceof Array) {
//The object is not an instance of Array
} else {
//The object is an instance of Array
}
Kuncinya di sini adalah bisa menggunakan TIDAK! di depan misalnya. Biasanya cara saya mengatur ini adalah seperti ini:
if(obj instanceof Array) {
//Do nothing here
} else {
//The object is not an instance of Array
//Perform actions!
}
Dan itu agak menjengkelkan harus membuat pernyataan lain ketika saya hanya ingin tahu apakah objek adalah tipe tertentu.
javascript
instanceof
ryandlf
sumber
sumber
!! obj instanceof Array
mengembalikan false (salah) sementara!!(obj instanceof Array)
mengembalikan true (benar)In this case, the order of precedence is important (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence). The ! operator precedes the instanceof operator.
ke jawaban Anda?Apakah cara yang benar untuk memeriksa ini - karena orang lain sudah menjawab. Dua taktik lain yang telah disarankan tidak akan berhasil dan harus dipahami ...
Dalam kasus
!
operator tanpa tanda kurung.Dalam kasus ini, urutan prioritas adalah penting ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence ). The
!
Operator mendahuluiinstanceof
operator. Jadi,!obj
dievaluasifalse
dulu (sama dengan! Boolean(obj)
); maka Anda menguji apakahfalse instanceof Array
, yang jelas negatif.Dalam kasus
!
operator sebeluminstanceof
operator.Ini adalah kesalahan sintaksis. Operator seperti
!=
adalah operator tunggal, sebagai lawan dari TIDAK diterapkan pada EQUALS. Tidak ada operator!instanceof
dengan cara yang sama seperti tidak ada!<
operator.sumber
Sangat mudah untuk melupakan kurung (kurung) sehingga Anda dapat membiasakan diri melakukan:
atau
Coba di sini
sumber