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

const  о  =  {
           name :  ' J ulie ' ,
           greetBackwards :  function ( )    {
                             i
               const  self  =  th s ;
               funct ion  getReverseName ( )
                   let  nameBackwards  =   '  '  ;
                                                 =
                   for ( l et  i=sel f . name . l ength- 1 ;   i> O ;   i--)  {
                                         l
                      nameBackwards  +=  se f . name [ i ] ;
                   return  nameBackwards ;

               return  ' $ { getReverseName ( ) }  s i   eman  ym  , o lle ' ;
                                                         H
           } ,
       } ;
       o . greetBackwards ( ) ;
          Это общепринятая методика, и вы часто будете встречать присваивание значения
       переменной this константам self, или that. Стрелочные функции, которые мы бу­
       дем рассматривать далее в этой главе, являются еще одним средством решения этой
       проблемы.


       Функциональные выражения и а н о н и м н ы е   функции

          До сих пор  мы имели дело  исключительно с  объявлениями  функций  (function
       declaration),  которые  присваивают  функции  и  тело  (т.е.  то,  что  функция  дела­
       ет), и  идентификатор  (он позволяет  впоследствии  вызывать  функцию по имени).
       JavaScript поддерживает также анонимные функции (anonymous function), у которых
       не обязательно есть идентификатор.
          У вас может возникнуть резонный вопрос "Как использовать функцию, у кото­
       рой  нет идентификатора?  Как мы должны вызывать ее без  идентификатора?" От­
       вет кроется в понятии функциональных выражений (function expression). Известно,
       что выражение - это нечто, что вычисляет значение, и мы также знаем, что функ­
       ция - это также  значение,  как и все остальное в  JavaScript.  Функциональное вы­
       ражение - это просто средство для того, чтобы объявить (возможно, безымянную)
       функцию. Функциональное выражение может быть присвоено чему-нибудь (в ре­
       зультате ему будет назначен идентификатор) или сразу же вызвано2•
          Функциональные выражения синтаксически идентичны объявлениям функций,
       за исключением того, что вы можете опустить имя функции. Давайте рассмотрим
       пример, в котором мы используем функциональное выражение и присвоим резуль­
       тат переменной (который фактически эквивалентен объявлению функции).



       2 Это немедленно вызываемое функ ц иональное выражение (Immediately Invoked Function Expression -
       IIFE), которое мы рассмотрим в главе 7.

       1 3 8    Глава 6. Функции
   133   134   135   136   137   138   139   140   141   142   143