При вызове функция не компилируется, это точно. Возможно компилируется при в момент "создания"(тут сложно сказать, что бы знать наверняка нужна документация на байткод). Там происходит волшебное newfunction... Что за ним скрывается, я не знаю... Но это, по идее, условная компиляция... Исходников в конечной swf нет. Есть такой же байткод, который мало чем отличается от обычного метода. Разница в наличии таких операций:
getlex QName(PackageInternalNs(""), "parentVariableName")
где parentVariableName - имя переменной в родительской функции.
Конечный результат этого волшебства практически ничем не отличается от обычной функции.
Естественно, создание анонимных функций внутри цикла для какой нибудь разновидности замыкания - смерти подобно...
В c# на сколько я знаю, имен локальных переменных нет, но есть имена аргументов функций... Поэтому рефлекторный код иногда кажется вполне вменяемым
Я даже пользовался математикой успешно отрефлекченой из XNA