Когда выполняется анонимная функция? У него нет имени, чтобы позвонить! - PullRequest
2 голосов
/ 11 июля 2009

Я знаю, что это выполняется не сразу, а когда?

Ответы [ 2 ]

5 голосов
/ 11 июля 2009

Да, ему не нужно иметь имя в объявлении времени, но его можно привязать к имени в времени выполнения .

Например, в Python:

def do_it(some_func):
    # call some_func
    result = some_func()
    # do something else

do_it(lambda: 42)

Таким образом, лямбда просто возвращает "42" и не имеет имени. Но когда он передается в функцию do_it, он привязывается к имени параметра some_func. Таким образом, является именем для вызова, которое затем вызывается.

1 голос
/ 11 июля 2009

Анонимная функция также может быть выполнена сразу после ее определения, без привязки к какому-либо имени во время выполнения. Пример Javascript:

var o = "hello world";
(function(msg) {
  alert(msg);
})(o);

Это обычно используется для создания областей действия .

...