Pertanyaan Bagaimana menentukan apakah variabel 'tidak terdefinisi' atau 'nol'?


Bagaimana saya menentukan apakah variabel itu undefined atau null? Kode saya adalah sebagai berikut:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  //DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

Tetapi jika saya melakukan ini, juru bahasa JavaScript menghentikan eksekusi.


1598
2018-04-15 18:12


asal


Jawaban:


Anda dapat menggunakan kualitas dari operator persamaan abstrak untuk melakukan ini:

if (variable == null){
    // your code here.
}

Karena null == undefined benar, kode di atas akan menangkap keduanya null dan undefined.


2194
2018-04-15 18:14



Cara standar untuk menangkap null dan undefined secara bersamaan adalah ini:

if (variable == null) {
     // do something 
}

--yang 100% setara dengan yang lebih eksplisit tetapi kurang ringkas:

if (variable === undefined || variable === null) {
     // do something 
}

Ketika menulis JS profesional, itu diterima begitu saja bahwa [jenis persamaan dan perilaku == vs ===] [1] dipahami. Oleh karena itu kami gunakan == dan hanya dibandingkan dengan null.


Edit lagi

Komentar yang menyarankan penggunaan typeof secara sederhana salah. Ya, solusi saya di atas akan menyebabkan ReferenceError jika variabel tidak ada. Ini hal yang bagus. Ini ReferenceError yang diinginkan: ini akan membantu Anda menemukan kesalahan Anda dan memperbaikinya sebelum Anda mengirimkan kode Anda, sama seperti kesalahan kompilator akan dalam bahasa lain.

Anda seharusnya tidak memiliki referensi untuk variabel yang tidak diumumkan dalam kode Anda.


908
2018-01-22 03:01



if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}

176
2018-04-15 18:25



Menggabungkan jawaban di atas, tampaknya jawaban yang paling lengkap adalah:

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

Ini harus bekerja untuk variabel apa pun yang tidak dideklarasikan atau dideklarasikan dan secara eksplisit ditetapkan ke nol atau tidak terdefinisi. Ekspresi boolean harus dievaluasi ke false untuk setiap variabel yang dideklarasikan yang memiliki nilai bukan nol yang sebenarnya.


161
2017-10-11 17:02



if (typeof EmpName != 'undefined' && EmpName) {

akan dievaluasi ke true jika nilainya tidak:

  • batal

  • tidak terdefinisi

  • NaN

  • string kosong ("")

  • 0

  • Salah


74
2018-05-07 07:24



jQuery attr() fungsi mengembalikan string kosong atau nilai aktual (dan tidak pernah null atau undefined). Satu-satunya waktu itu kembali undefined adalah saat pemilih Anda tidak mengembalikan elemen apa pun.

Jadi Anda mungkin ingin menguji dengan string kosong. Alternatifnya, karena string kosong, null dan tidak terdefinisi adalah false-y, Anda dapat melakukan ini:

if (!EmpName) { //do something }

20
2018-04-15 18:20



Saya suka menggunakan ini:

if (!!variable) {
   //do something
}

Itu menangkap keduanya batal dan tidak terdefinisi


12
2017-09-16 08:35



Jika variabel yang ingin Anda periksa adalah global, lakukan

if (window.yourVarName) {
    // Your code here
}

Cara ini untuk memeriksa tidak akan menimbulkan kesalahan bahkan jika yourVarName variabel tidak ada.

Contoh: Saya ingin tahu apakah browser saya mendukung API Riwayat

if (window.history) {
    history.back();
}

Bagaimana ini bekerja:

window adalah objek yang menyimpan semua variabel global sebagai propertinya, dan dalam JavaScript adalah sah untuk mencoba mengakses properti objek yang tidak ada. Jika history tidak ada saat itu window.history kembali undefined. undefined adalah falsey, jadi kode dalam if(undefined){} pemblokiran tidak akan berjalan.


9
2018-02-10 16:30



Saya datang untuk menulis fungsi saya sendiri untuk ini ... javascript itu aneh

Dapat digunakan secara harfiah apa pun. (Perhatikan bahwa ini juga memeriksa apakah variabel mengandung apa pun yang dapat digunakan nilai-nilai. Tetapi karena informasi ini biasanya juga diperlukan, saya pikir itu layak untuk dikeposkan). Tolong pertimbangkan meninggalkan catatan.

function empty(v) {
        let type = typeof v;
        if(type === 'undefined') {
            return true;
        }
        if(type=== 'boolean') {
            return !v;
        }
        if(v === null) {
            return true;
        }
        if(v === undefined) {
            return true;
        }
        if(v instanceof Array) {
            if(v.length < 1) {
                return true;
            }
        }
        else if(type === 'string') {
            if(v.length < 1) {
                return true;
            }
            if(v==='0') {
                return true;
            }
        }
        else if(type === 'object') {
            if(Object.keys(v).length < 1) {
                return true;
            }
        }
        else if(type === 'number') {
            if(v===0) {
                return true;
            }
        }
        return false;
    }

Kompatibel dengan typescript.

sunting. fungsi ini harus dilakukan persis hal yang sama seperti PHP empty()fungsi (Lihat RETURN VALUES)

Mempertimbangkan undefined, null, false, 0, 0.0, "0"  {}, [] sebagai kosong.

"0.0", NaN, " ", true dianggap tidak kosong.


7
2017-10-24 15:14



Karena Anda gunakan jQuery, Anda dapat menentukan apakah suatu variabel tidak terdefinisi atau nilainya nol dengan menggunakan fungsi tunggal.

var s; // undefined
jQuery.isEmptyObject(s); // will return true;

s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;

// usage
if(jQuery.isEmptyObject(s)){
    alert('Either variable: s is undefined or its value is null');
}else{
     alert('variable: s has value ' + s);
}

s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;

6
2017-07-08 08:00



Saya baru saja mengalami masalah ini yaitu memeriksa apakah suatu objek tidak valid.
Saya hanya menggunakan ini:

if (object) { Somecode}

yaitu

if (document.getElementById("enterJob")) 
  document.getElementById("enterJob").className += ' current';

3
2017-10-15 16:44