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

(
           f   fuпctioп  )
               returп  о ;

       l e t   oRef  =  f  ( ) ;
       oRef . п ote  = "Все  же  не  совсем  безопасно ! " ;
          Обычно нечто вне области видимости строго недоступно. Функции являются ис­
       ключением, они предоставляют нам окна в области видимости, которые в противном
       случае были бы недоступны. Мы убедимся в важности этого в следующих главах.


       Немедленно вызываемые

                        ь
       функционал н ы е   выраж н и я
                                         е
          В главе 6  ы   рассматривали функциональные выражения. Функциональные вы­
                   м
       ражения позволяют создавать немедленно вызываемые функциональные выражения
       (Immediately Invoked Function Expression - IIFE). IIFE объявляет функцию, а затем
       немедленно ее запускает. Т е перь, имея понятие об областях видимости и замкнутых
       выражениях, можно обсудить, зачем они могли бы нам понадобиться. IIFE выглядит
       следующим образом.
       ( f uпctioп ( )   {
           / /  это  тело  IIFE
       } )   ( ) ;

          Мы создаем анонимную функцию, используя функциональное выражение, а за­
       тем немедленно ее вызываем. Преимущество IIFE в том, что все в ней имеет соб­
       ственную область видимости, а также, поскольку это функция, она может передать
       нечто из области видимости.
       coпst  message  =  ( f unction ( )
           const  secret  = "Здесь  указан  пароль ! " ;
                                                 t
           return  ' П ароль  имеет  длину  $ { secret . leng h }   символов .  ' ;
       } )   ( ) ;
            l
       conso e . l o g (message ) ;
          Переменная secret защищена в области видимости IIFE, к ней нельзя обратить­
       ся извне. Вы можете возвратить из IIFE все, что хотите, и весьма часто возвращают
       массивы, объекты и функции. Давайте рассмотрим функцию, которая способна со­
       общить о количестве вызовов и в которую нельзя вмешаться.
       const  f  =  ( f unction ( )
           let  count  =  О ;
           return  function ( )
               return  ' М еня  вызывали  $ { ++count }  раз ( а )   . ' ;




                                    Немедленно вызываемые функциональные выражения   1 5 3
   147   148   149   150   151   152   153   154   155   156   157