匿名関数を試しています:
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())
出力: 未定義のこんにちは
何が未定義ですか??
実行中の 2 つのトレース ステートメントがあります。
trace("hello");
trace(a.b());
あなたが呼び出すと、trace(a.b())
最初a.b()
に呼び出されます。a.b
は単にこの関数です:
function()
{
trace("hello");
}
これが実行され、「hello」が出力されます。
ここで、2 番目の trace( 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())
出力として「hello」が表示されるはずです。
または、これを次のように変更した場合:
var a:Object = new Object() ;
a.b = function()
{
trace("hello");
}
trace(a.b)
ab() の結果の値の代わりに ab の値をトレースしているように、結果として「hello」と「Function function」(または類似のもの) が表示されるはずです。
関数「b」の戻り値です。