Функции в 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.