Найти тему
Nuances of programming

Эта информация навсегда изменит ваше отношение к коду JavaScript

Источник: Nuances of Programming

Курс SkillFactory Frontend-разработчик. Получите перспективную творческую профессию в IT.

Вы наверняка неоднократно слышали термин “блок кода”. А знаете, что именно под ним подразумевают в программировании?

В сообществе JavaScript ответ довольно прост. И поскольку речь идет о JS, будем придерживаться следующего определения: все, что заключено в символе {}  —  это блок.

-2

Теперь дадим ему имя.

-3

Чем он стал? Объектом!

А что такое объекты? В отличие от других языков, где дается довольно смутное представление об объектах, в JS объект  —  это просто набор пар имя/значение (более изысканно выражаясь, ключ/значение).

-4

Добавим к нему () =>.

-5

Чем он стал?

-6

Функцией!

А что такое функция? Это просто “блок с небольшим дополнительным механизмом, прикрепленным к нему. Мы можем вызвать (или инициировать ее), используя оператор группирования (), и она выполнит определенную задачу (или будет выполнена).

-7

Функции фактически являются (специальными) объектами в JavaScript.

-8

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

-9

И это будет работать.

-10

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

Почему JavaScript позволяет это делать? Потому что в нем функции  —  это объекты.

Имя функции и код, который пишется внутри блока,  —  всего лишь одно из свойств, добавленных к функции. Уникальность этого свойства заключается в том, что оно является инициируемым  —  вы можете вызвать (или выполнить) этот код.

-11

Как вы знаете, функция может принимать входное значение и возвращать выходное, т.е. мы можем передавать значения (примитивы) функции.

-12

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

-13

А поскольку функции  —  это объекты, мы можем передавать функцию функции.

-14

Такое понятие известно в JS как полноправная функция. И оно открывает горизонты для совершенно иных подходов к решению проблем.

Полноправные функции позволяют обращаться с функциями как с данными: присваивать их переменным, передавать другим функциям, возвращать их из функций, создавать функции “на лету” с помощью литерального синтаксиса и т.д.

Вы можете обращаться с функциями так же, как с другими типами, объектами, строками, числами и булевыми значениями.

Блоки, объекты и функции  —  это одно и то же (с небольшой разницей в механизме).

Как только вы полностью осознаете эту ментальную модель, она раз и навсегда изменит ваше отношение к коду JavaScript.

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Somnath Singh: This Will (Forever) Change How You Look at Your Code