Page 221 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 221
Проще всего считать числа, строки и даже массивы обычными переменными. Эта
концепция приводит нас к очень удобной идее, что переменная - это фрагмент дан
ных (набор, или коллекция данных, в случае массива или объекта). Если размыш
лять именно так о переменных, то будет куда сложнее понять и реализовать весь
потенциал функций, поскольку вы можете передавать функцию в виде параметра
другой функции точно так же, как если бы это была любая другая переменная. По
скольку функции активны, мы не думаем о них как о фрагментах данных (которые
мы считаем пассивными). И это правда, функция активна, когда ее вызывают. Одна
.
ко до вызова . . она пассивна, точно так же, как любая другая переменная.
Вот аналогия, которая могла бы вам помочь. Если вы идете в супермаркет, то
можете считать фрукты фрагментами данных: 2 банана, 1 яблоко и т.д. Вы хотите
сделать коктейль из фруктов, поэтому покупаете еще и блендер. Блендер больше по
хож на функцию: он делает нечто (а именно - измельчает фрукты в коктейль). Но
пока блендер находится в вашей корзине (выключенный и ничего не смешивающий),
это только еще один товар в вашей корзине, и вы можете сделать с ним то же, что
и с фруктами: переложить из корзины на кассовую ленту, заплатить за него, поло
жить в хозяйственную сумку, отнести домой и т.д. И только когда вы подключите
его к сети, загрузите фруктами и включите, он станет чем-то отличным от фруктов.
Таким образом, функция применима везде, где применима переменная, но что это
значит? В частности, это значит, что вы можете делать следующие вещи.
• Присвоить функции псевдоним, что создаст переменную, которая указывает
на нее.
• Поместить функцию в массив (возможно, смешанный, из данных других типов).
• Использовать функцию как свойство объекта (см. главу 9).
• Передать функцию в функцию.
• Возвратить функцию из функции.
• Возвратить функцию из функции, которой в качестве аргумента была пере
дана функция.
Г о лова еще не кружится? Этот список действительно кажется очень абстрактным,
и вы, естественно, могли бы задаться вопросом "С какой стати я должен это исполь
зовать?" На самом деле эта гибкость невероятно мощна, и все эти возможности при
меняются весьма часто.
Давайте начнем с самого простого элемента этого списка: присвоения функции
псевдонима. Предположим, что у вас есть функция с очень длинным именем и вы
хотите использовать ее многократно в пределах нескольких строк. Вы быстро устане
те вводить такое длинное название функции, да и читать код будет очень трудно. По
скольку функция - это только тип данных, как и любой другой, вы можете создать
новую переменную с более коротким именем.
224 Глава 1 3 . Функции и мощь абстрактного мышления

