我收到了“错误#1009:无法访问空对象引用的属性或方法”。我的申请上有错误。是否有一个函数可以用来在它导致错误之前检测到它...可能是这样的:
isValid(variableName);
我知道有一个,因为我之前使用过它,但我不记得它现在是什么。
非常感谢任何帮助。
答案 0 :(得分:2)
答案 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> }