Лучший способ проверить, существует ли переменная в 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 есть три разные возможности для переменной.
- Переменная 'a' вообще не объявлена;
- Переменная 'a' объявлена, но не назначена (не определена). Пример:
var a;
- Переменная '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");
}