Лучший способ проверить, существует ли переменная в Javascript?

Ну, мой вопрос очевиден,

Пример:

определять a со значением по умолчанию undefined:

var a;

Если я хочу проверить, если a var существует, я попробую с:

Но в этом случае a существует и a значение undefined, но в boolean evaluation это false,

var a; // default value is 'undefined'
if (a) {
    alert('a exists');
} else {
    alert("a don't exists")
}

Я также могу попробовать следующий пример: но этот пример генерирует ошибку.

// var a;
// a is not defined
if (a) {
    alert('a exists');
} else {
    alert("a don't exists")
}

И в этом примере я пытаюсь с typeof, Но a определяется с undefined значение по умолчанию.

var a;
if (typeof a != 'undefined') {
    alert('a exists');
} else {
    alert("a don't exists")
}

И в этом примере

console.log ('var a exists:', window.hasOwnProperty('a'));

Каков наилучший способ проверить, существует ли переменная на самом деле и почему?

Благодарю.

1 ответ

В JS есть три разные возможности для переменной.

  1. Переменная 'a' вообще не объявлена;
  2. Переменная 'a' объявлена, но не назначена (не определена). Пример: var a;
  3. Переменная 'a' объявлена, но ей присвоено пустое или нулевое значение. (Возможный сценарий, если переменная пытается получить значение из серверной части)
    Пример: var a=null; var a='';

Если вы ожидаете значение в переменной, отличное от 0 или false, лучше использовать следующее условие. И, конечно, все зависит от ваших потребностей, и если вы не уверены в значениях переменных или объектов, всегда заключайте их в блок try & catch.

//var a;
//var a=null;
//var a='';
//var a=0;
//var a='value';

if (typeof a != "undefined" && a) {
  alert("a is defined AND a is TRUE value");
} else {
  alert("a not exist OR a is a FALSE value");
}

Другие вопросы по тегам