От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных изучению JavaScript. И сегодня мы с вами познакомимся с такими понятиями, как Function Declaration и Function Expression в JavaScript, а также узнаем, в чем разница между ними. Приступим.
Собственно, с Function Declaration мы с вами уже знакомы, это стандартное объявление или, иными словами, декларирование функции, которую мы можем вызывать в коде, как после объявления функции, так и до этого:
1 2 3 4 5 |
hello('Вызов функции до ее объявления'); function hello(param){ console.log(param); } hello('Вызов функции после ее объявления'); |
Оба вызова функции замечательно отработают:
Хорошо, а что из себя представляет Function Expression? Function Expression (функция выражение, функциональное выражение) — это еще один вариант создания функций, который выглядит следующим образом:
1 2 3 |
var hello = function(param){ console.log(param); }; |
То есть, мы код функции присваиваем обыкновенной переменной. Собственно, переменная в данном случае и будет теперь ни чем иным, как функцией, именем функции, по которому можно к ней обратиться. Давайте попробуем вызвать функцию дважды, как и в предыдущем примере, до объявления функции и после этого:
1 2 3 4 5 |
hello('Вызов функции до ее объявления'); var hello = function(param){ console.log(param); }; hello('Вызов функции после ее объявления'); |
Упс! Не вышло. Наш код вернул ошибку, сообщая, что функции hello нет. Эта ошибка сработала до объявления функции. Ок, давайте попробуем закомментировать первый вызов функции:
А вот второй вызов успешно отработал. Полагаю, вы уже догадались, в чем конкретно заключается отличие Function Declaration от Function Expression. Правильно, при декларировании функции она (функция) создается до выполнения остального кода. Соответственно, к моменту начала выполнения кода все задекларированные функции уже созданы и доступны к использованию.
В случае же с функциональным выражением функции будут создаваться только в момент выполнения кода, а не перед ним. Использование Function Expression часто можно встретить в коде различных библиотек и скриптов, поэтому, если вы увидите запись в переменную некой функции, не удивляйтесь — это Function Expression.
На этом мы завершим данную статью. Если вы хотите больше узнать о JavaScript, тогда рекомендую обратить свое внимание на уроки по JavaScript и отдельный курс по языку JavaScript. Удачи!