2016-12-07 6 views
0

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

Пример:

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

var a; 

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

Но в этом случае 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'));

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

Спасибо.

+2

Возможный дубликат [JavaScript проверить, если переменная существует (определяется/инициализирован)] (http://stackoverflow.com/questions/5113374/javascript-check-if-variable-exists -is-defined-initialized) – Dekel

+0

Если по умолчанию переменная a не определена, тогда проверьте (typeof a == "undefined"). – MCMXCII

+0

Для первого, 'a === undefined'. Во-вторых, используйте перемычки и наблюдайте за консолью разработчиков, чтобы исправить ошибки, когда вы забыли «var a». Не используйте лишние хакеры типа, которые скрывают полезные сообщения об ошибках и позволяют избежать ошибок. –

ответ

3

В переменной JS существует три различные возможности.

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

Если вы ожидаете значение переменной, отличное от 0 или ложно, то лучше использовать следующие условия. И, конечно же, все это зависит от ваших потребностей, и если вы не знаете значения переменных или объектов, всегда добавляйте их в 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"); 
 
}