Тестирование для необъявленной переменной - PullRequest
0 голосов
/ 04 апреля 2011

Я пытаюсь разобрать RSS-канал с помощью JavaScript.Иногда в ленте есть несколько категорий, поэтому я хочу проверить, есть ли что-то в пункте 2. Если я не проверю, я получаю ошибку, и когда я использую следующий код для проверки, я также получаю ошибку.(Я устанавливаю var cat2 просто как тест, если переменная определена или нет).

var catItem = item.getElementsByTagName("category").item(2).text;

        if (typeof catItem != 'undefined'){
            var cat2 = "1"
        }
        else{

            var cat2 = "2"      
        }

Ответы [ 4 ]

1 голос
/ 22 сентября 2015

Проверка, является ли переменная неопределенной, может быть выполнена с помощью следующего, как указано выше, if (typeof catItem! == 'undefined') {...}

Однако я просто хотел отметить, чтонеопределенная переменная не совпадает с необъявленной переменной.То, что вы спрашиваете, это не «Тестирование для необъявленной переменной», как вы указали в заголовке.

Неопределенная переменная - это переменная, которая «объявлена», но ей не присвоено какое-либо значение.Необъявленная переменная - это переменная, которая не была объявлена ​​с ключевым словом «var».

0 голосов
/ 04 апреля 2011

Ваш код будет работать только если есть элемент в диапазоне позиции 2.

Почему бы просто не сделать:

if(item.getElementsByTagName("category").length > 1) {
0 голосов
/ 04 апреля 2011

Вы можете попробовать что-то вроде этого:

var catItem = item.getElementsByTagName("category");
if(catItem[1]) {
   ...
}
else {
   ...
}
0 голосов
/ 04 апреля 2011
var catItem = document.getElementsByTagName("category")[2];
var cat2 = "2";

if (typeof catItem !== 'undefined') {
    cat2 = "1";
}

Вы также можете сократить это, используя троичную операцию:

var catItem = document.getElementsByTagName("category")[2];
var cat2 = catItem ? "2" : "1";
...