Page 221 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 221

Проще всего считать числа, строки и даже массивы обычными переменными. Эта
       концепция приводит нас к очень удобной идее, что переменная - это фрагмент дан­
       ных (набор, или коллекция данных, в случае массива или объекта). Если размыш­
       лять именно так о переменных, то будет куда сложнее понять и реализовать весь
       потенциал функций, поскольку вы можете передавать функцию в  виде параметра
       другой функции точно так же, как если бы это была любая другая переменная. По­
       скольку функции активны, мы не думаем о них как о фрагментах данных (которые
       мы считаем пассивными). И это правда, функция активна, когда ее вызывают. Одна­
                   .
       ко до вызова  . .   она пассивна, точно так же, как любая другая переменная.
          Вот аналогия,  которая могла бы  вам  помочь.  Если вы идете в  супермаркет, то
       можете считать фрукты фрагментами данных: 2  банана,  1  яблоко и т.д. Вы хотите
       сделать коктейль из фруктов, поэтому покупаете еще и блендер. Блендер больше по­
       хож на функцию: он делает нечто (а именно - измельчает фрукты в коктейль). Но
       пока блендер находится в вашей корзине (выключенный и ничего не смешивающий),
       это только еще один товар в вашей корзине, и вы можете сделать с ним то же, что
       и с фруктами: переложить из корзины на кассовую ленту, заплатить за него, поло­
       жить в хозяйственную сумку, отнести домой и т.д. И только когда вы подключите
       его к сети, загрузите фруктами и включите, он станет чем-то отличным от фруктов.
          Таким образом, функция применима везде, где применима переменная, но что это
       значит? В частности, это значит, что вы можете делать следующие вещи.

          •  Присвоить функции псевдоним, что создаст переменную, которая указывает
             на нее.

          •  Поместить функцию в массив (возможно, смешанный, из данных других типов).
          •  Использовать функцию как свойство объекта (см. главу 9).
          •  Передать функцию в функцию.
          •  Возвратить функцию из функции.

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

          Г о лова еще не кружится? Этот список действительно кажется очень абстрактным,
       и вы, естественно, могли бы задаться вопросом "С какой стати я должен это исполь­
       зовать?" На самом деле эта гибкость невероятно мощна, и все эти возможности при­
       меняются весьма часто.
          Давайте начнем с самого простого элемента этого списка: присвоения функции
       псевдонима. Предположим, что у вас есть функция с очень длинным именем и вы
       хотите использовать ее многократно в пределах нескольких строк. Вы быстро устане­
       те вводить такое длинное название функции, да и читать код будет очень трудно. По­
       скольку функция - это только тип данных, как и любой другой, вы можете создать
       новую переменную с более коротким именем.


       224      Глава 1 3 . Функции и мощь абстрактного мышления
   216   217   218   219   220   221   222   223   224   225   226