Как проверить неопределенную переменную в JavaScript - PullRequest
838 голосов
/ 13 мая 2009

Я хотел проверить, определена ли переменная или нет. Например, следующее выдает не определенную ошибку

alert( x );

Как я могу поймать эту ошибку?

Ответы [ 14 ]

0 голосов
/ 10 января 2018

Ошибка говорит вам, что x даже не существует! Он не был объявлен объявленным , что отличается от присвоения значения.

var x; // declaration
x = 2; // assignment

Если вы объявите x, вы не получите ошибку. Вы получите предупреждение, которое говорит undefined, потому что x существует / был объявлен, но ему не присвоено значение.

Чтобы проверить, была ли объявлена ​​переменная, вы можете использовать typeof, любой другой метод проверки, существует ли переменная, вызовет ту же ошибку, что и изначально.

if(typeof x  !==  "undefined") {
    alert(x);
}

Это проверка типа значения, хранящегося в x. Он вернет undefined только тогда, когда x не был объявлен ИЛИ, если был был объявлен и еще не был назначен.

0 голосов
/ 11 августа 2017

Принятый ответ правильный. Просто хотел добавить еще один вариант. Вы также можете использовать блок try ... catch, чтобы справиться с этой ситуацией. Странный пример:

var a;
try {
    a = b + 1;  // throws ReferenceError if b is not defined
} 
catch (e) {
    a = 1;      // apply some default behavior in case of error
}
finally {
    a = a || 0; // normalize the result in any case
}

Помните о блоке catch, который немного запутан, поскольку создает область действия на уровне блока. И, конечно, пример чрезвычайно упрощен, чтобы ответить на заданный вопрос, он не охватывает лучшие практики обработки ошибок;).

0 голосов
/ 04 июля 2016

Мы можем проверить undefined следующим образом

var x; 

if (x === undefined) {
    alert("x is undefined");
} else {
     alert("x is defined");
}
0 голосов
/ 09 декабря 2015

Я часто использую самый простой способ:

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

EDIT:

Без инициализации переменной будет выдано исключение «Uncaught ReferenceError: переменная не определена ...»

...