Что такое анонимная функция и с чем ее едят?

Здравствуйте. Расскажите, пожалуйста, что такое анонимная функция, для чего она нужна, и как она используется на практике. А так же, насколько я знаю, она используется в замыканиях - хотелось бы узнать и об этом тоже.
  • Вопрос задан
  • 45338 просмотров
Пригласить эксперта
Ответы на вопрос 5
DIITHiTech
@DIITHiTech
Fullstack javascript developer
На самом деле классика случая анонимной+замыкание:
var name="admin"
    
    setTimeout(function(){
        alert(name);
    },1000);


А анонимная функция без имени, а без имени она потому что ее вызывают не по имени, а по ссылке на нее.
т.е полный пример с замыканием:

function sayAfter(text,delay){  
    setTimeout(function(){
        alert(text);
    },delay);
   }

  sayAfter("lol",1000);


Аудитория требует более тонкого примера применения...

(function(){
        var x, y, z;

        //много разного кода, много переменных, которые не нужны в глобальной области видимости
    })();
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Анонимная функция (еще можно встретить такое название как лямбды) - функция без имени. Может быть использована в момент объявления, можно присвоить переменной, можно еще всякие штуки делать. Если хочется знать что еще можно с ними делать, добро пожаловать в чудный мир Лямбда-исчислений и функционального программирования.
Ответ написан
Комментировать
IonDen
@IonDen
JavaScript developer. IonDen.com
Анонимные функции очень часто используются для выполнения какого-то кода в коллбэках, где в целом не нужно создавать отдельную именную функцию под это действие. Например:

button.addEventListener('click', function (event) {
    // эта анонимная функция будет вызвана при клике
}, false);

// или можно так, посложнее, но обычно это лишнее
function btnClick (event) {
    // это уже функция с именем
}
button.addEventListener('click', btnClick, false); // <-  в данном случае мы передали ссылку на функцию


Замыкания же, это такой прием для хранения скрытых данных, и тут конечно тоже можно использовать анонимные функции, но соль не в этом.
Ответ написан
baskerville42
@baskerville42
Учусь работать (Junior)
Анонимная функция это функция без имени
function() { ... }
function funcWithName() { ... }


Вот самый лучший пример использования
$( document ).ready(function() {
  // Handler for .ready() called.
});


Про замыкания с помощью анонимной функции не слыхал...
Ответ написан
@kofon
Я человек
Ещё можно тебе голову сломать вот этим:
function getFunction(name){
  if (!name) return function(){ return "Who are you?" }
  else       return function(){ return "Hello " + name; }
}

// Вызов
var petya   = getFunction("Петя");
var unknown = getFunction();

petya();  // петя
unknown;  // тИ кто???


Объяснение нужно? Если что, объясню!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы