2012-08-01 74 views

回答

1

你必須運行兩個跟蹤語句:

trace("hello"); 

trace(a.b()); 

當你調用trace(a.b())第一a.b()被調用。 a.b僅僅是這個函數:

function() 
{ 
    trace("hello"); 
} 

使運行和輸出「你好」。

現在第二條曲線(trace(a.b())試圖輸出a.b()的結果。問題是你不會在a.b()中返回任何東西,所以結果是不確定的。

編輯:JonatanHedborg在他的評論中指出,a.b = new Function()真的不需要,因爲你在下一行覆蓋它。

如果將其更改爲:

var a:Object = new Object() ; 

a.b = function() 
{ 
    return "Hello"; 
} 

trace(a.b()) 

您現在應該看到「你好」作爲輸出。

另外,如果你把它改成這樣:

var a:Object = new Object() ; 

a.b = function() 
{ 
    trace("hello"); 
} 

trace(a.b) 

讓你跟蹤AB代替AB(的結果值的值),那麼你應該看到「Hello」和「功能功能「(或類似的)作爲結果。

+1

''a.b = new Function()'不應該被需要,因爲它被另一個函數的定義覆蓋。 – 2012-08-01 14:27:01

+0

@JonatanHedborg同意。我只是複製他的代碼,並改變了他遇到的問題,但這是一件好事 - 我會將其編輯爲答案。 – 2012-08-01 14:32:06

+0

順便說一句,任何想法爲什麼.. a.b =功能():無效,不工作呢? void返回類型規範應該理想地移除未定義的問題。 – 2012-08-01 15:39:50

1

它是函數「b」的返回值。