带有if语句的未定义属性或对象仍然会出错

时间:2013-01-24 22:54:05

标签: actionscript-3 flash

示例:

if (foo) {}


if (foo != undefined) {}


if (foo != null) {}


try {foo} catch(e:Error) {}

给出编译器错误。我该如何防止这种情况?

回答(感谢Poke):

// declare the variable first   
var foo:DisplayObject;

if (foo == null) {
    trace('foo is null') // traces  
}

1 个答案:

答案 0 :(得分:2)

ActionScript 3是statically typed。这意味着必须先声明每个变量,然后才能以任何方式使用它们。声明变量与其初始化无关,其中变量第一次获取值;很多时候,两者都是在var myVar:uint = 2之类的情况下同时完成的(这会将变量myVar声明为uint并使用值2初始化它。)

因此,在您的情况下,您会收到一个错误,因为您正在访问尚未声明的变量,因此编译器不知道您尝试访问的名称。因此,在使用变量之前,您需要确保实际声明了变量。