Pertanyaan Bagaimana cara membandingkan variabel ke tidak terdefinisi, jika saya tidak tahu apakah mereka ada? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Dalam JavaScript Anda dapat mendeklarasikan variabel dan jika itu undefined, Anda bisa memeriksanya variable == undefined; Saya tahu itu, tetapi bagaimana Anda dapat membandingkan nilai yang belum Anda ketahui jika itu ada dalam memori?

Sebagai contoh, saya memiliki kelas yang dibuat ketika pengguna mengklik tombol. Sebelum ini, kelas tidak terdefinisi - tidak ada di mana pun; bagaimana saya bisa membandingkannya?

Apakah ada cara tanpa menggunakan try-catch?


75
2018-05-06 06:23


asal


Jawaban:


Cara terbaik adalah dengan memeriksa mengetik, karena undefined/null/false adalah hal yang rumit di JS. Begitu:

if(typeof obj !== "undefined") {
    // obj is a valid variable, do something here.
}

Perhatikan itu typeof selalu mengembalikan string, dan tidak menghasilkan kesalahan jika variabel tidak ada sama sekali.


156
2018-05-06 07:00



if (obj === undefined)
{
    // Create obj
}

Jika Anda melakukan pemrograman javascript ekstensif, Anda harus terbiasa menggunakan === dan! == saat Anda ingin melakukan pemeriksaan jenis tertentu.

Juga jika Anda akan melakukan cukup banyak javascript, saya sarankan menjalankan kode melalui JSLint http://www.jslint.com mungkin tampak sedikit kejam pada awalnya, tetapi sebagian besar hal JSLint memperingatkan Anda tentang akhirnya akan kembali menggigit Anda.


39
2017-08-01 04:45



if (document.getElementById('theElement')) // do whatever after this

Untuk hal-hal yang tidak terdefinisi yang membuang kesalahan, uji nama properti objek induk alih-alih hanya nama variabel - jadi bukan:

if (blah) ...

melakukan:

if (window.blah) ...

2
2018-05-06 06:37



!undefined benar dalam javascript, jadi jika Anda ingin mengetahui apakah variabel atau objek Anda tidak terdefinisi dan ingin mengambil tindakan, Anda dapat melakukan sesuatu seperti ini:

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}

1
2017-07-06 19:09



if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...

-1
2018-05-06 06:48