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

#actionscript-3

#actionscript-3

Вопрос:

 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;}
  

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

Ответ №1:

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

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

все значения не равны undefined.

Ответ №2:

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

 if (XMLData.product[i] amp;amp; XMLData.product[i].image[0] amp;amp; 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
}