Flex 3:如何查看变量是否存在

时间:2011-07-15 20:33:59

标签: flex validation variables

我收到了“错误#1009:无法访问空对象引用的属性或方法”。我的申请上有错误。是否有一个函数可以用来在它导致错误之前检测到它...可能是这样的:

isValid(variableName);

我知道有一个,因为我之前使用过它,但我不记得它现在是什么。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

我猜:hasOwnProperty

答案 1 :(得分:2)

简单地说,null对象映射到布尔值false。 假设:

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

上面的代码将显示一条警告,表示NOT X,因为null变量映射为false

但是,如果要检查对象是否具有特定名称的属性,请尝试

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

现在如果在o上有一个名为“something”的属性,即使它的值为null,它也将进入if()... 否则它会进入其他地方。

答案 2 :(得分:1)

简单的if语句将起作用。

if (myVariable)
{
  //do something
}

UPDATE:在查看导致错误的代码后,我的猜测是wholeProject[j]为空或wholeProject[j].wholePosition为空。尝试这样的事情:

if (wholeProject[j] && wholeProject[j].wholePosition)
{
  for (var k:int = 0; k < wholeProject[j].wholePosition.length; k++)
}

答案 3 :(得分:1)

实际上非常简单。使用带有(err :)的try / catch构造 例如,我使用它来解析可能产生错误的解析代码。 “错误”表示任何错误。

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

你会这样做:

try {
newvalue = variableName;
}
catch (error:ReferenceError) { <do something> }