最近我需要调用一个没有像这样的实际监听器的监听器函数:
foo(null);
private function foo(event:Event):void
{
//do something
}
所以我想知道这与使用以下内容之间的性能是否存在显着差异,我可以在没有监听器的情况下阻止调用函数的null,但我仍然可以使用监听器调用它:
foo();
private function foo(event:Event = null):void
{
}
我不确定它只是一个风格问题,或者实际上是不好的练习,我应该写两个类似的函数,一个有一个没有事件参数(对我来说这看起来很麻烦)。
期待您的意见,thx。
答案 0 :(得分:2)
正如bitc所说,没有区别。请注意,这只是严格类型调用的情况,编译器可以在编译时确定默认参数,并实际包含默认值作为参数。
当调用是无类型的时,播放器必须在运行时查找默认参数,这会花费一些速度,但可能不应该太多,与需要在其中执行的所有运行时类型检查/强制转换相比。一个案例。
然而,这不是一个好习惯。你应该把它分成两个功能。一,接收事件并从中提取必要的数据,然后将其传递给另一个实际处理它的函数。该函数中的实际逻辑变得更加可重用。因为您可以简单地移动函数(如在pull up中)而不会破坏代码,因此重构变得更容易。最后但并非最不重要的是,它明确区分了责任。
当然,如果无论对事件的实际回应是什么,既不是处理事件也不是太复杂,而不是分裂是有点夸大的。
格尔茨
back2dos
答案 1 :(得分:0)
这两个编译为完全相同的字节码。我已经检查了二进制差异。