📌 Что известно о различии между function expression и function declaration?



💬 Спрашивают в 20% собеседований



Существует два основных способа объявления функций: Function Declaration (Объявление Функции) и Function Expression (Функциональное Выражение). Хотя оба подхода определяют функции, между ними есть несколько ключевых различий, влияющих на поведение и использование функций в коде.



🤔 Function Declaration (Объявление Функции)



Способ объявления функции, при котором используется ключевое слово function, за которым следует имя функции.

function sum(a, b) {

return a + b;

}





🤔 Особенности:



Поднятие (Hoisting):



Поднимаются вверх их области видимости перед выполнением кода, что позволяет вызывать функции до их объявления в коде.



Область видимости:



Определяется её местом в коде: в глобальной области видимости, в области видимости другой функции или в блочной области видимости (в строгом режиме).



Мутабельность: Имя функции является неизменным и не может быть переназначено.



🤔 Function Expression (Функциональное Выражение)



Способ объявления функции, при котором функция создаётся в рамках выражения. Функциональные выражения могут быть анонимными или именованными.

const sum = function(a, b) {

return a + b;

};




🤔 Особенности:



Поднятие (Hoisting):



Переменные, объявленные через var, поднимаются, но инициализируются значением undefined, поэтому функциональное выражение не будет доступно до его объявления в коде. Если функциональное выражение объявлено через let или const, то оно вообще не будет доступно до объявления из-за временной мертвой зоны.



Анонимные и именованные функции:



Функциональные выражения могут быть анонимными (не иметь имени) или именованными. Именованные функциональные выражения могут быть полезны для улучшения читаемости кода и при отладке.



Использование в выражениях:



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



🤔 Итог:



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



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых