почему кодер as3 не использует замыкание? - PullRequest
1 голос
/ 18 ноября 2011

Я вижу много такого кода

foo.addListener(Event.CLICK, clickHandler);

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

но почему бы и нет?

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

Я думаю, что ниже лучше, я использую Flex SDK 4.5.1, я не знаю, связано ли это с версией, или что-то об оптимизации?

Ответы [ 2 ]

5 голосов
/ 18 ноября 2011

Даже в других вариантах ECMAScript (хорошо, например, JavaScript) лучше связать событие, используя ссылку на функцию, чем выгружать анонимную функцию.

Причина, по которой лучше использовать первую форму, состоит в том, когда дело доходит до отмены привязки события. Если у вас есть ссылка на связанное событие, вы можете отменить ее привязку, в противном случае вы застряли в необходимости отсоединения события другими способами.


Другая информация, все функции в ECMAScript являются замыканиями. Они закрывают содержащиеся переменные и устанавливают новую область видимости. Оба примера используют замыкания.

1 голос
/ 19 ноября 2011

Производительность не является второстепенным фактором: http://gskinner.com/talks/quick/#52

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...