正在尝试使用匿名函数:
var a:Object = new Object() ;
a.b = new Function()
a.b =function()
{
trace("hello");
}
trace(a.b())
输出: 你好 未定义
什么是未定义的?
答案 0 :(得分:1)
它是函数“b”的返回值。
答案 1 :(得分: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())
您现在应该看到“hello”作为输出。
或者,如果您将其更改为:
var a:Object = new Object() ;
a.b = function()
{
trace("hello");
}
trace(a.b)
因此您要跟踪a.b的值而不是a.b()的结果值,那么您应该看到“hello”和“Function function”(或类似的东西)作为结果。