Привет! Сегодня мы поговорим о том, что такое функции, о том как работать с аргументами, какие есть подходы для работы с ними, о том, что такое область видимости, обсудим такие понятия, как всплытие и замыкание. Если вы пишете ваш код сплошным текстом, то в нем достаточно сложно разбираться, его сложно читать, понимать, рефакторить. В программировании принято выделять блоки кода в функции, и давать им осмысленные имена. Так вы сможете легче ориентироваться в вашем коде, вызывать функцию по ее имени. Есть даже специальный паттерн, называется он — DRY (Don’t Repeat Yourself), который говорит вам о том, что не нужно писать один и тот же код сразу в нескольких местах, и это понятно, если вы захотите изменить логику, вам нужно найти все эти места в вашем коде и не забыть каждое из этих мест поправить. Достаточно сложная операция. Лучше выносить код в функции и править всего лишь в одном месте. Помимо этого функции позволяют организовать рекурсивный вызов. Что такой репрессивный вызов, мы сегодня с вами подробнее обсудим. Наконец, в Java-скрипте функции выполняют особую роль: они создают области видимости.