例子:
if (foo) {}
if (foo != undefined) {}
if (foo != null) {}
try {foo} catch(e:Error) {}
给出编译器错误。我该如何防止这种情况?
答案(感谢戳):
// declare the variable first
var foo:DisplayObject;
if (foo == null) {
trace('foo is null') // traces
}
例子:
if (foo) {}
if (foo != undefined) {}
if (foo != null) {}
try {foo} catch(e:Error) {}
给出编译器错误。我该如何防止这种情况?
答案(感谢戳):
// declare the variable first
var foo:DisplayObject;
if (foo == null) {
trace('foo is null') // traces
}
ActionScript 3 是静态类型的。这意味着必须先声明每个变量,然后才能以任何方式使用它。声明一个变量与变量第一次取值的初始化无关;很多时候,两者都是同时完成的,尽管做了类似的事情var myVar:uint = 2
(这将变量声明myVar
为uint
并用 value 初始化它2
)。
因此,在您的情况下,您会收到一个错误,因为您正在访问一个尚未声明的变量,因此编译器不知道您尝试访问的名称。因此,您需要确保在使用变量之前实际声明了您的变量。