为什么as3编码器不使用闭包?

时间:2011-11-18 14:52:19

标签: actionscript-3

我看到很多像这样的代码

foo.addListener(Event.CLICK, clickHandler);

function clickHandler(event:Event):void {
   //...
}

但是,为什么不呢?

foo.addListener(Event.CLICK, function(event:Event):void {
  //...
});

我认为以下更好,我使用的是flex sdk 4.5.1,我不知道它是否与版本有关,还是有关优化的内容?

2 个答案:

答案 0 :(得分:5)

即使在其他ECMAScript变体中(好的,所以JavaScript),通常使用对函数的引用来绑定事件比在匿名函数中转储更好。

使用第一种形式更好的原因是解除事件的绑定。如果你拥有对绑定事件的引用,你可以取消绑定它,否则你不得不以其他方式解除绑定事件。


其他信息,ECMAScript中的所有函数都是闭包。它们关闭包含的变量并设置新的范围。两个示例都使用闭包。

答案 1 :(得分:1)

表现不是一个小问题:http://gskinner.com/talks/quick/#52