Middle
111
questionbank
Каковы особенности работы с function expression и function declaration в JavaScript?
AI答案
sobes.tech AI
Function declaration (объявление функции) поднимается интерпретатором (hoisting), то есть может быть вызвана до своего определения в коде. Создается в момент парсинга скрипта. Имеет имя.
// functionDeclaration(); // Вызов до определения возможен
function functionDeclaration() {
// Код функции
}
Function expression (функциональное выражение) не поднимается. Выполняется как часть выражения. Может быть анонимным или иметь имя (именованное функциональное выражение). Именованное Functional expression позволяет обращаться к функции рекурсивно внутри нее самой и видеть имя в отладчике.
// functionExpression(); // Вызов до определения вызовет ошибку
const functionExpression = function() {
// Код функции
};
// Именованное функциональное выражение
const namedFunctionExpression = function myFunctionName() {
// Код функции
// Можно вызвать myFunctionName() внутри этой функции
};
Основные отличия:
| Особенность | Function Declaration |
Function Expression |
|---|---|---|
| Hoisting | Да | Нет |
| Время создания | При парсинге скрипта | В момент выполнения |
| Наличие имени | Обязательно | Может быть опционально |
| Использование в условиях | Не рекомендуется | Рекомендуется |
Пример использования в условиях:
// Не рекомендуется для Function Declaration
if (condition) {
function doSomething() {
// ...
}
}
// Предпочтительнее для Function Expression
let doSomething;
if (condition) {
doSomething = function() {
// ...
};
}