Вы наверняка неоднократно слышали термин “блок кода”. А знаете, что именно под ним подразумевают в программировании?
В сообществе JavaScript ответ довольно прост. И поскольку речь идет о JS, будем придерживаться следующего определения: все, что заключено в символе {}
— это блок.
Теперь дадим ему имя.
Чем он стал? Объектом!
А что такое объекты? В отличие от других языков, где дается довольно смутное представление об объектах, в JS объект — это просто набор пар имя/значение (более изысканно выражаясь, ключ/значение).
Добавим к нему () =>
.
Чем он стал?
Функцией!
А что такое функция? Это просто “блок” с небольшим дополнительным механизмом, прикрепленным к нему. Мы можем вызвать (или инициировать ее), используя оператор группирования ()
, и она выполнит определенную задачу (или будет выполнена).
Функции фактически являются (специальными) объектами в JavaScript.
Вы можете легко добавить свойство к этой функции, используя точечную нотацию.
И это будет работать.
Новички всегда удивляются, когда узнают, что в JavaScript можно добавлять к функции свойства и методы. В других языках программирования такое просто невозможно.
Почему JavaScript позволяет это делать? Потому что в нем функции — это объекты.
Имя функции и код, который пишется внутри блока, — всего лишь одно из свойств, добавленных к функции. Уникальность этого свойства заключается в том, что оно является инициируемым — вы можете вызвать (или выполнить) этот код.
Как вы знаете, функция может принимать входное значение и возвращать выходное, т.е. мы можем передавать значения (примитивы) функции.
Поскольку объекты являются примитивами в JavaScript, мы можем передавать их в функцию.
А поскольку функции — это объекты, мы можем передавать функцию функции.
Такое понятие известно в JS как полноправная функция. И оно открывает горизонты для совершенно иных подходов к решению проблем.
Полноправные функции позволяют обращаться с функциями как с данными: присваивать их переменным, передавать другим функциям, возвращать их из функций, создавать функции “на лету” с помощью литерального синтаксиса и т.д.
Вы можете обращаться с функциями так же, как с другими типами, объектами, строками, числами и булевыми значениями.
Блоки, объекты и функции — это одно и то же (с небольшой разницей в механизме).
Как только вы полностью осознаете эту ментальную модель, она раз и навсегда изменит ваше отношение к коду JavaScript.
Читайте также:
- 7 способов сократить код JavaScript
- Обзор JavaScript на основе диалога с ChatGPT
- Почему написание собственного кода делает вас лучшим разработчиком
Читайте нас в Telegram, VK и Дзен
Перевод статьи Somnath Singh: This Will (Forever) Change How You Look at Your Code