Pertanyaan Cara memeriksa variabel yang tidak ditentukan dalam JavaScript


Saya ingin memeriksa apakah variabel tersebut didefinisikan atau tidak. Sebagai contoh, berikut ini melempar kesalahan yang tidak terdefinisi

alert( x );

Bagaimana saya bisa menangkap kesalahan ini?


769
2018-05-13 14:09


asal


Jawaban:


Di JavaScript, null adalah sebuah objek. Ada nilai lain untuk hal-hal yang tidak ada, undefined. DOM kembali null untuk hampir semua kasus di mana ia gagal menemukan beberapa struktur dalam dokumen, tetapi dalam JavaScript itu sendiri undefined adalah nilai yang digunakan.

Kedua, tidak, tidak ada padanan langsung. Jika Anda benar-benar ingin memeriksa khusus untuk null, lakukan:

if (yourvar === null) // Does not execute if yourvar is `undefined`

Jika Anda ingin memeriksa apakah ada variabel, itu hanya dapat dilakukan dengan try/catch, sejak typeof akan memperlakukan variabel yang tidak dideklarasikan dan variabel yang dinyatakan dengan nilai undefined sebagai setara.

Tapi, untuk memeriksa apakah suatu variabel dideklarasikan dan tidak undefined:

if (typeof yourvar !== 'undefined') // Any scope

Jika Anda tahu ada variabel, dan ingin memeriksa apakah ada nilai yang tersimpan di dalamnya:

if (yourvar !== undefined)

Jika Anda ingin tahu apakah anggota ada independen tetapi tidak peduli apa nilainya:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

Jika Anda ingin tahu apakah suatu variabel jujur:

if (yourvar)

Sumber


1488
2018-05-13 14:11



Satu-satunya cara untuk benar-benar menguji apakah suatu variabel undefined adalah melakukan hal berikut. Ingat, tidak terdefinisi adalah objek dalam JavaScript.

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

Beberapa solusi lain di thread ini akan mengarahkan Anda untuk percaya bahwa variabel tidak terdefinisi meskipun telah didefinisikan (dengan nilai NULL atau 0, misalnya).


301
2018-05-13 14:53



Secara teknis, solusi yang tepat adalah (saya percaya):

typeof x === "undefined"

Anda kadang-kadang bisa malas dan menggunakan

x == null

tapi itu memungkinkan baik variabel x yang tidak terdefinisi, dan variabel x mengandung null, untuk mengembalikan true.


59
2018-05-13 14:12



Versi yang lebih mudah dan lebih singkat adalah:

if (!x) {
   //Undefined
}

ATAU

if (typeof x !== "undefined") {
    //Do something since x is defined.
}

16
2018-05-13 14:26



Saya sudah sering melakukan:

function doSomething(variable)
{
    var undef;

    if(variable === undef)
    {
         alert('Hey moron, define this bad boy.');
    }
}

14
2018-05-13 14:45



Anda juga dapat menggunakan operator bersyarat terner:

var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);

//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);


3
2018-02-12 12:02



Saya sering menggunakan cara paling sederhana:

var variable;
if (variable === undefined){
    console.log('Variable is undefined');
} else {
    console.log('Variable is defined');
}

EDIT:

Tanpa menginisialisasi variabel, pengecualian akan dilemparkan "Uncaught ReferenceError: variabel tidak didefinisikan ..."


1
2017-12-09 08:44



"Solusi" potensial lainnya adalah menggunakan window obyek. Ini menghindari masalah kesalahan referensi ketika di browser.

if (window.x) {
    alert('x exists and is truthy');
} else {
    alert('x does not exist, or exists and is falsy');
}

1
2017-11-13 20:16