AS3 - как проверить, существует ли переменная? - PullRequest
0 голосов
/ 29 мая 2011
if (XMLData.product[i].image[0].thumb) {thumbURL = XMLData.product[i].image[0].thumb;}

Возвращает: TypeError: Ошибка # 1010: термин не определен и не имеет свойств.

То же самое с

if (XMLData.product[i].image[0].thumb!=undefined) {thumbURL = XMLData.product[i].image[0].thumb;}

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

Ответы [ 2 ]

5 голосов
/ 29 мая 2011

Правильный способ - сравнить его с неопределенным (хотя вы должны использовать! == вместо! =).Вполне возможно, что это более ранний объект, неопределенный.Чтобы помочь отладить эту проблему, вам может потребоваться проверить, что

XMLData
XMLData.product
XMLData.product[i]
XMLData.product[i].image
XMLData.product[i].image[0]
XMLData.product[i].image[0].thumb

равны all и не равны undefined.

1 голос
/ 29 мая 2011

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

if (XMLData.product[i] && XMLData.product[i].image[0] && XMLData.product[i].image[0].thumb)
{
    thumbURL = XMLData.product[i].image[0].thumb;
}else{
   //Not defined somewhere
}

или

try{
     thumbURL = XMLData.product[i].image[0].thumb;
}catch(err:Error){
     //Something went wrong. You can analyze the error data from here and act accordingly
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...