我正在尝试一个匿名函数:
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())
输出:你好未定义
什么未定义??
它是函数“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())
您现在应该看到“hello”作为输出。
或者,如果您将其更改为:
var a:Object = new Object() ;
a.b = function()
{
trace("hello");
}
trace(a.b)
这样您就可以跟踪 ab 的值而不是 ab() 结果的值,那么您应该会看到“hello”和“Function function”(或类似的东西)作为结果。