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

function  addThreeSquareAddFiveTakeSquareRoo ( x )    {
                                                t
           1 1   это  совсем  бестолковая  функция,  не  так  ли?
           return  Math . s qrt (Math . p ow ( x +З ,  2 ) +5 ) ;


       / /  ДО
       const  answer  =  ( a ddThreeSquareAddFiveTakeSquareRoot ( S )   +
           addThreeSquareAddFiveTakeSquareRoot ( 2 ) )  /
           addThreeSquareAddFiveTakeSqureRoot ( 7 ) ;

       1 1   после
       const  f  =  addThreeSquareAddFiveTakeSquareRoo ;
                                                 t
       const  answer  =  ( f  ( S )   +  f  ( 2 ) )  /  f  ( 7 ) ;
          Обратите внимание, что в примере "после" мы не используем круглые скобки после
       имени функции addThreeSquareAddFi veTakeSquareRoot. Сделав это, мы вызвали бы
       функцию, и переменная f вместо того, чтобы стать псевдонимом addThreeSquareAd
       dFiveTakeSquareRoot, содержала бы результат этого вызова. Затем, когда мы попы­
                                                         5
       тались бы использовать ее как функцию (например, f (  )   ), это привело бы к ошибке,
       поскольку f не была бы функцией, а вызывать вы можете только функции.
          Конечно, это совершенно надуманный пример, и в действительности встречает­
       ся не часто. Но это на самом деле происходит при применении пространств имен
       (namespacing), что  весьма  распространено  при разработке приложений для Node
       (см. главу 20), например так.
       const  Money  =  require ( ' math-money ' ) ;    / /   require  - функция  Node  для
                                           / /   импорта  библиотек
       const  oneDollar  =  Money . D ollar ( l ) ;
       / /   или,  если  мы  не  хотим  писать  повсюду  "Mone . D ollar " :
                                                  y
       const  Dollar  =  Money . D ollar;
       const  twoDollars  =  Dollar ( 2 )  ;
       / /  обратите  внимание :  oneDollar  и  twoDollars  - экземпляры  того  же  типа
          В данном случае эффект от  применения псевдонимов (aliasing) не так уж и велик,
       Mon y .   Dollar сокращается до просто Dollar, что кажется достаточно разумным.
          e
          Т е перь, завершив умственную разминку, давайте перейдем к более энергичному
       абстрактному размышлению.

       Функции в массиве

          Исторически это программное решение использовалось не очень широко, но его
       популярность растет, а при определенных обстоятельствах оно чрезвычайно полез­
       но. Одно из его применений - реализация идеи конвейера (pipeline), когда есть на­
       бор индивидуальных этапов, которые мы хотим выполнять часто. Преимущество ис­
       пользования массивов в том, что вы можете изменять их в любое время. Необходимо



                                                            Переменные функций   225
   217   218   219   220   221   222   223   224   225   226   227