Flex 3: как узнать, существует ли переменная - PullRequest
1 голос
/ 16 июля 2011

Я получаю «Ошибка № 1009: не удается получить доступ к свойству или методу пустой ссылки на объект». ошибка в моем заявлении. Есть ли функция, которую я могу использовать, чтобы обнаружить это, прежде чем она вызовет ошибку ... может быть что-то вроде:

isValid(variableName);

Я знаю, что есть один, потому что я использовал его раньше, но я не могу вспомнить, что это сейчас.

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

2 голосов
/ 16 июля 2011

Проще говоря, нулевой объект отображается в логическое значение false. предположим:

var x:ArrayCollection; //uninitialised
if(x) {
    Alert.show("X");
} else {
    Alert.show("NOT X");
}

Над кодом будет отображаться предупреждение НЕ X, потому что переменная null отображается в false

Однако, если вы хотите проверить, есть ли у объекта свойство с определенным именем, попробуйте

var o:MyObject=new MyObject();
if(o.hasOwnProperty("something")) {
    Alert.show(o.something);
} else {
    Alert.show("Something undefined");
}

теперь, если на o есть свойство, называемое «что-то», ДАЖЕ, ЕСЛИ ЕГО ЗНАЧЕНИЕ НЕДОСТУПНО, оно перейдет в if () ... в противном случае оно перейдет в другое.

2 голосов
/ 16 июля 2011

Мое предположение: hasOwnProperty

1 голос
/ 16 июля 2011

Это на самом деле довольно просто.Используйте конструкцию try / catch с (err :) Например, я использую это для окружения кода синтаксического анализа, который может генерировать ошибки.«Ошибка» означает любую ошибку.

try { relation.parseObject(XMLObject["relation"],source); } 
catch (err:Error) {tr.output(mN + "bad relation " + err)}; 

Вы должны сделать это:

try {
newvalue = variableName;
}
catch (error:ReferenceError) { <do something> }
1 голос
/ 16 июля 2011

Будет работать простой оператор if.

if (myVariable)
{
  //do something
}

ОБНОВЛЕНИЕ: После просмотра кода, вызывающего ошибку, я предполагаю, что либо wholeProject[j] равно нулю, либоwholeProject[j].wholePosition равно нулю.Попробуйте что-то вроде этого:

if (wholeProject[j] && wholeProject[j].wholePosition)
{
  for (var k:int = 0; k < wholeProject[j].wholePosition.length; k++)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...