2013-01-24 22 views
2

例子:未定義的屬性或對象與if語句仍然給出錯誤

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 
} 

回答

2

的ActionScript 3是statically typed。這意味着每個變量都必須先聲明才能以任何方式使用。聲明一個變量與變量的初始化無關,變量首次得到一個值;很多時候,兩者都是在同一時間完成的,但是執行類似var myVar:uint = 2(這聲明變量myVaruint並使用值2初始化它)。

所以在你的情況下,你會得到一個錯誤,因爲你正在訪問一個未被聲明的變量,所以編譯器不知道你試圖訪問的名字。所以你需要確保你的變量在你使用之前被實際聲明。

+0

謝謝,這很有道理。我確實發現你可以在現有對象中有一個空的子元素,並且不會拋出任何錯誤。 – Tom

相關問題