Bagaimana cara memverifikasi keberadaan objek dalam JavaScript?
Karya-karya berikut:
if (!null)
alert("GOT HERE");
Tapi ini melempar Kesalahan:
if (!maybeObject)
alert("GOT HERE");
Kesalahan:
maybeObject
tak terdefinisi.
Anda dapat menggunakan typeof
operator dengan aman pada variabel yang tidak ditentukan.
Jika telah ditetapkan nilai apa pun, termasuk nol, typeof akan mengembalikan sesuatu selain yang tidak ditentukan. typeof selalu mengembalikan string.
Karena itu
if (typeof maybeObject != "undefined") {
alert("GOT THERE");
}
!==
perbandingan.Ada banyak kebenaran di sini, jadi saya pikir saya membuat beberapa hal lebih jelas.
Sebenarnya Anda tidak dapat mengetahui secara akurat apakah ada variabel (kecuali jika Anda ingin membungkus setiap baris kedua menjadi blok coba-tangkap).
Alasannya adalah Javascript memiliki nilai terkenal
undefined
yang sangat tidak berarti bahwa variabel tidak didefinisikan, atau tidak adaundefined !== not defined
Jadi, baik variabel yang ada maupun variabel lain yang tidak dapat melaporkan
undefined
jenisnya kepada Anda .Adapun kesalahpahaman @Vinvin
null == undefined
,. Ini disebabkan oleh tipe paksaan, dan itulah alasan utama mengapa Crockford terus memberi tahu semua orang yang tidak yakin dengan hal semacam ini untuk selalu menggunakan operator kesetaraan yang ketat===
untuk menguji kemungkinan nilai-nilai palsu.null !== undefined
memberi Anda apa yang Anda harapkan. Harap perhatikan juga, itufoo != null
bisa menjadi cara yang efektif untuk memeriksa apakah suatu variabel tidakundefined
atau tidaknull
. Tentu saja Anda bisa eksplisit, karena dapat membantu keterbacaan.Jika Anda membatasi pertanyaan untuk memeriksa apakah suatu objek ada,
typeof o == "object"
mungkin ide yang bagus, kecuali jika Anda tidak mempertimbangkan objek array, karena ini juga akan dilaporkan sebagai jenisobject
yang dapat membuat Anda sedikit bingung. Belum lagi itutypeof null
juga akan memberi Andaobject
yang hanya salah.Daerah primal mana Anda benar-benar harus berhati-hati
typeof
,undefined
,null
,unknown
dan misteries lainnya adalah tuan rumah benda. Mereka tidak bisa dipercaya. Mereka bebas melakukan hampir semua hal kotor yang mereka inginkan. Jadi berhati-hatilah dengan mereka, periksa fungsionalitas jika Anda bisa, karena itu satu-satunya cara aman untuk menggunakan fitur yang bahkan mungkin tidak ada.sumber
foo!=null
akan menghasilkan ReferenceError jikafoo
tidak didefinisikan. Dengan demikian, lebih baik digunakantypeof
, kecuali Anda berencana menangkap pengecualian.undefined !== not defined
&&foo != null can be an effective way to check if a variable is neither 'undefined' nor 'null'
. Saya tidak mengatakan!= null
itu baik untuk memeriksa apakah itu ada. Anda mengambilnya di luar konteks. (Saya juga menyebutkan bahwa itu adalah sidenote, tidak terkait langsung dengan masalah pertanyaan OP)undefined
. Mereka tidak sama.(note) it can be used !== you should use
. Gunakan akal sehat saat membaca. Ketika variabel dideklarasikan (daftar parameter, atau di tempat lain) dan Anda ingin memeriksa apakah itu mendapat nilai,!=
null benar-benar aman. Itu adalah usecase yang berbeda dari yang diminta OP, itu sebabnya saya memasukkannya sebagai catatan. Seluruh paragraf adalah tentang posting @ Kevin dan ketik paksaan btw. Seperti yang dapat Anda perhatikan jika Anda membaca dengan seksama.!= null
ketika Anda tahu bahwa variabel telah dideklarasikan. Ini sangat berguna untuk memeriksa argumen fungsi, pertimbangkan:var hasValue = function(foo) {return foo != null}
Kamu bisa memakai:
sumber
Dua arah.
typeof untuk variabel lokal
Anda dapat menguji untuk objek lokal menggunakan typeof:
jendela untuk variabel global
Anda dapat menguji untuk objek global (yang ditentukan pada cakupan global) dengan memeriksa objek jendela:
sumber
Jika itu objek global, Anda bisa menggunakannya
if (!window.maybeObject)
sumber
window.hasOwnProperty('maybeObject')
sedikit lebih mudah dibaca, jika itu adalah objek globalAnda bisa menggunakan "typeof".
sumber
Utas dibuka beberapa waktu lalu. Saya pikir sementara itu penggunaan operator ternary adalah pilihan paling sederhana:
sumber
var maybeObject = typeof maybeObject !== "undefined" ? Chart:false;
dan periksa jika tidakfalse
.Saya dulu hanya melakukan
if(maybeObject)
sebagai cek nol di javascripts saya.Jadi hanya jika
maybeObject
- adalah objek, peringatan akan ditampilkan. Saya punya contoh di situs saya.https://sites.google.com/site/javaerrorsandsolutions/home/javascript-dynamic-checkboxes
sumber
maybeObject
ini0, 0.0, or ""
, itu cek ke falseSaya baru saja menguji contoh typeOf dari atas dan tidak ada yang berhasil untuk saya, jadi saya malah menggunakan ini:
sumber
Selain memeriksa keberadaan objek / variabel Anda mungkin ingin memberikan output "kasus terburuk" atau setidaknya menjebaknya menjadi peringatan sehingga tidak luput dari perhatian.
Contoh fungsi yang memeriksa, memberikan alternatif, dan menangkap kesalahan.
Saya membuat ini juga karena objek yang saya lewati dapat berupa x, xm, xm [z] dan typeof xm [z] akan gagal dengan kesalahan jika xm tidak ada.
Saya harap ini membantu. (BTW, saya pemula dengan JS)
sumber
bagi saya ini bekerja untuk objek-DOM:
sumber
Jika Anda hanya peduli tentang keberadaannya (sudah dinyatakan?), Jawaban yang disetujui sudah cukup:
Jika Anda peduli memiliki nilai aktual, Anda harus menambahkan:
Sebagai
typeof( null ) == "object"
misalnya
bar = { x: 1, y: 2, z: null}
dengan cara ini Anda memeriksa apakah tidak ada
null
atau tidakundefined
, dan karenatypeof
tidak kesalahan jika nilai tidak ada ditambah&&
sirkuit pendek, Anda tidak akan pernah mendapatkan kesalahan run-time.Secara pribadi, saya sarankan menambahkan helper fn di suatu tempat (dan jangan percaya
typeof()
):sumber
sumber
sumber
atur nilai Textbox ke satu frame ke inline frame menggunakan panel tab align align tidak. Jadi pertama-tama, sebelum menetapkan nilai kita perlu memeriksa bingkai panel tab yang tersedia atau tidak menggunakan kode berikut:
Kode Javascript:
sumber
nol dan nol adalah petunjuk implisit. Jika Anda tidak melakukan aritmatika, membandingkan, atau mencetak '0' ke layar, Anda tidak perlu mengetiknya. Ini tersirat. Seperti dalam tersirat. Typeof juga tidak diperlukan untuk alasan yang sama. Menonton.
if (obj) console.log ("exist");
Saya tidak melihat permintaan untuk tidak atau ada untuk itu tidak termasuk sebagai. Saya suka konten tambahan yang tidak sesuai dengan pertanyaan. Mari kita tetap sederhana.
sumber
if (!maybeObject)
- tapi memang, judulnya meminta yang sebaliknya.Pikirkan itu paling mudah seperti ini
sumber
Atau, Anda semua dapat mulai menggunakan ekslusif saya () metode dan dapat melakukan hal-hal yang dianggap mustahil. yaitu:
Hal-hal seperti:,
exists("blabla")
atau bahkan:exists("foreignObject.guessedProperty.guessNext.propertyNeeded")
juga dimungkinkan ...sumber