正與一個匿名函數試驗:以下代碼輸出中的「未定義」是什麼?
var a:Object = new Object() ;
a.b = new Function()
a.b =function()
{
trace("hello");
}
trace(a.b())
輸出: 你好 不確定
什麼是不確定的?
正與一個匿名函數試驗:以下代碼輸出中的「未定義」是什麼?
var a:Object = new Object() ;
a.b = new Function()
a.b =function()
{
trace("hello");
}
trace(a.b())
輸出: 你好 不確定
什麼是不確定的?
你必須運行兩個跟蹤語句:
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」和「功能功能「(或類似的)作爲結果。
''a.b = new Function()'不應該被需要,因爲它被另一個函數的定義覆蓋。 – 2012-08-01 14:27:01
@JonatanHedborg同意。我只是複製他的代碼,並改變了他遇到的問題,但這是一件好事 - 我會將其編輯爲答案。 – 2012-08-01 14:32:06
順便說一句,任何想法爲什麼.. a.b =功能():無效,不工作呢? void返回類型規範應該理想地移除未定義的問題。 – 2012-08-01 15:39:50
它是函數「b」的返回值。
「什麼是未定義?」。有點像試圖識別UFO! – jlarson 2012-08-01 14:21:32