Объявление vs. выражение функций в JS: в чем разница?

Функции в JavaScript можно объявлять двумя способами: объявление функции и функциональное выражение. Рассмотрим их различия.

Пример: Объявление функции vs. функциональное выражение

// Объявление функции
function myFunction(param1, param2) {
  // тело функции
}

// Функциональное выражение
const myFunctionExpression = function (param1, param2) {
  // тело функции
};

Основное различие — функциональное выражение не имеет имени, являясь анонимной функцией. Ключевое слово function, параметры (опциональные) и тело функции идентичны в обоих случаях.

Сравнение: Объявление функции vs. функциональное выражение

Характеристика Объявление функции Функциональное выражение
Наличие имени Да Нет
Анонимность Нет Да
Независимое использование Да Нет
Присваивание переменной Да Да
Передача как аргумент Да Да

Использование функциональных выражений

Функциональные выражения нельзя использовать самостоятельно. Вызов без предварительного присваивания переменной вызовет ошибку. Объявление функции, в отличие от функционального выражения, может использоваться самостоятельно.

Присваивание переменной

Функциональное выражение можно присвоить переменной. Рекомендуется использовать const для предотвращения случайного переприсваивания.

const myFunction = function(a, b) {
  return a + b;
};

console.log(myFunction(5, 3)); // Выведет 8

myFunction — переменная, содержащая функциональное выражение. Само выражение находится в правой части присваивания.

Функциональные выражения как коллбэк-функции

Функциональные выражения часто используются как аргументы других функций, особенно коллбэк-функции. Имя функции в этом случае не требуется.

setTimeout(function() {
  console.log("Сообщение с задержкой");
}, 1000);

Здесь анонимное функциональное выражение передаётся в setTimeout и выполнится через 1000 миллисекунд.

Выбор между объявлением функции и функциональным выражением зависит от контекста. Функциональные выражения удобны для передачи функций в качестве аргументов, а объявления функций — для самостоятельного использования. Понимание различий важно для эффективной работы с JavaScript.

Что будем искать? Например,программа