Function Declaration — это функция, объявленная отдельно как инструкция. Function Expression — это функция, созданная как часть выражения. Главное отличие: Function Declaration поднимается полностью, а Function Expression — только переменная.
Функция, объявленная отдельно:
function sayHello() {
return 'Привет!';
}Функция, созданная как часть выражения:
const sayHello = function() {
return 'Привет!';
};Разница между Function Declaration и Function Expression — в том, как и когда они создаются. Это важно для понимания работы JavaScript.
Функция, объявленная отдельно:
function sayHello() {
return 'Привет!';
}Функция, созданная как часть выражения:
const sayHello = function() {
return 'Привет!';
};// Можно вызвать до объявления
console.log(sayHello()); // 'Привет!'
function sayHello() {
return 'Привет!';
}// Нельзя вызвать до создания
console.log(sayHello()); // Ошибка!
const sayHello = function() {
return 'Привет!';
};// Function Declaration полностью поднимается
declared(); // Работает
function declared() {
console.log('Работает');
}
// Function Expression — только переменная
// expressed(); // Ошибка! expressed ещё undefined
var expressed = function() {
console.log('Не работает');
};// Function Declaration видна везде в своей области
if (true) {
function test() { return 'Работает'; }
}
// Function Expression — только после объявления
if (true) {
var expr = function() { return 'Работает'; };
// expr(); // Только здесь можно вызвать
}// Основные функции программы
function calculateSum(a, b) {
return a + b;
}
function validateForm(data) {
// логика проверки
}// Функции как значения
const handlers = {
click: function() { /* обработка клика */ },
hover: function() { /* обработка наведения */ }
};
// Условное создание
let sayHi;
if (condition) {
sayHi = function() { return 'Привет!'; };
} else {
sayHi = function() { return 'Hello!'; };
}// ❌ Ошибка с Function Expression
console.log(myFunc()); // TypeError!
const myFunc = function() {
return 'Результат';
};
// ✅ Правильно с Function Declaration
console.log(declaredFunc()); // Работает
function declaredFunc() {
return 'Результат';
}// ❌ С var переменная поднимается, но значение нет
console.log(func()); // TypeError! func undefined
var func = function() {
return 'Результат';
};
// ✅ Function Declaration полностью поднимается
console.log(declared()); // Работает
function declared() {
return 'Результат';
}Понимание разницы помогает писать более предсказуемый код и избегать ошибок с порядком объявления функций.
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪