В этом руководстве вы узнаете об анонимных функциях в JavaScript.
Анонимная функция — это функция без имени. Ниже показано, как определить анонимную функцию:
(function() { //... });
Обратите внимание: если вы не поместите анонимную функцию внутри ()
, вы получите синтаксическую ошибку. ()
делает анонимную функцию выражением, которое возвращает объект функции.
Анонимная функция недоступна после ее первоначального создания. Поэтому вам часто нужно присваивать ее переменной.
Например, ниже показана анонимная функция, которая отображает сообщение:
let show = function() { console.log('Anonymous function'); }; show();
В этом примере анонимная функция не имеет имени между ключевым словом function
и круглыми скобками ()
. Поскольку нам нужно вызвать анонимную функцию позже, мы присваиваем анонимную функцию переменной show
.
Использование в качестве аргументов
На практике анонимные функции часто передаются в качестве аргументов другим функциям. Например:
setTimeout(function() { console.log('Execute later after 1 second') }, 1000);
В этом примере мы передаем анонимную функцию в функцию setTimeout()
. Функция setTimeout()
выполняет эту анонимную функцию через одну секунду.
Обратите внимание, что функции являются гражданами первого класса в JavaScript. Поэтому вы можете передать функцию другой функции в качестве аргумента.
Немедленное выполнение вызванной функции
Если вы хотите создать функцию и выполнить ее сразу после объявления, вы можете объявить анонимную функцию следующим образом:
(function() { console.log('IIFE'); })();
Как это работает:
- Сначала определите выражение функции:
(function() { console.log('Immediately invoked function execution'); })
Это выражение возвращает функцию.
- Во-вторых, вызовите функцию, добавив завершающие круглые скобки
()
:
(function() { console.log('Immediately invoked function execution'); })();
Иногда вы можете захотеть передать в нее аргументы, например:
let person = { firstName: 'John', lastName: 'Doe' }; (function() { console.log(person.firstName } + ' ' + person.lastName); })(person);
Стрелочные функции
ES6 представил выражение функции стрелки, которое обеспечивает сокращение для объявления анонимных функций:
Например, эту функцию:
let show = function() { console.log('Anonymous function'); };
Можно сократить, используя следующую функцию стрелки:
let show =() => console.log('Anonymous function');
Аналогично, следующая анонимная функция:
let add = function(a, b) { return a + b; };
… функционально эквивалентен следующей стрелочной функции:
let add =(a, b) => a + b;
Заключение
- Анонимные функции — это функции без имен.
- Анонимные функции можно использовать в качестве аргумента для других функций или в качестве немедленно вызываемого исполнения функции.