Мы здесь! Теперь давайте поговорим об основных различиях между объявлением функции и выражением функции.
Прежде чем углубиться в это, давайте разберемся, что такое объявление функции и выражение функции.
Объявление функции: если мы пишем функцию в коде JavaScript с ключевым словом `function` в префиксе, это называется объявлением функции.
Выражение функции: если мы назначаем любую анонимную функцию любой переменной (пусть var const), это называется выражением функции.
Помимо синтаксиса, есть ключевое отличие, которое бросается в глаза, но, тем не менее, мы можем о нем не знать. Да это Hoisting
Поднятие для объявлений и выражений работает по-разному. Это происходит из-за его среды выполнения JavaScript.
Внутри контекста выполнения среды выполнения JavaScript. Он состоит из двух этапов
1. Этап создания
2. Этап выполнения
Этап создания меняет правила игры. В то время как в фазе создания движок javaScript поднимает главным образом на двух вещах, которые
1. Переменные, объявленные с ключевым словом `var`.
2. Объявления функций
Но тут этот вопрос мелькает перед нашим сознанием. Мы можем написать функциональное выражение с ключевым словом var, и оно будет поднято. Какая разница?
Ключевое отличие здесь в том. Если мы используем объявление функции, движок javaScript поднимает функцию и присваивает ей всю копию функции в качестве начального значения. — И если мы используем функциональное выражение, движок javaScript обрабатывает его так же, как любую переменную, вместо того, чтобы присваивать всю копию функции, он инициализирует ее значением undefined
.
давайте разберемся, взглянув на этот простой пример кода
Чтобы показать, что это происходит внутри браузера, я поместил отладчик в первую строку и посмотрел, как работает подъем в обоих случаях.
В заключение, для объявления функции он поднимается с копией функции, а для выражения он поднимается с неопределенным значением.
PS: Есть больше различий между объявлениями функций и функциональными выражениями. Вы можете узнать больше на mdn и js-info