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

Области видимости в JavaScript являются лексическими, а значит, можно опреде­
       лить,  какие переменные находятся в  области видимости,  просто посмотрев на ис­
       ходный код. Я не хочу сказать, что области видимости всегда и сразу очевидны из
       исходного кода: в этой главе мы увидим несколько примеров, которые требуют прис­
       тального внимания для определения областей видимости.
          Лексическая область видимости означает, что в области видимости функции на­
       ходятся только те переменные, которые были определены до момента определения
       самой функции (не путать с моментом ее вызова). Рассмотрим пример.
       const  х   =  3 ;
       function  f  ( )    {
           console . l og ( x ) ;  / /   это  сработает
           console . l o ( y ) ;  / /  а  это  - нет
                     g


       const  у   3 ;
        (
       f  ) ;
          Когда мы определили функцию f переменная х уже существовала, а переменная
       у  - еще нет. Затем мы объявили у и вызвали  f. Переменная х находится в области
       видимости тела функции f при ее вызове, а переменная у  - нет. Это пример лекси­
       ческой области видимости: у функции f есть доступ к идентификаторам, которые
       существовали на момент ее определения, но не на момент вЬLзова.
          Лексическими в JavaScript являются глобальная область видимости (global scope),
       область видимости б л ока (Ыосk scope) и области видимости функции (function scope).

       Глобальная область види м ости

          Область  видимости  имеет  иерархический,  древовидный характер.  Та  область
       видимости, в которой вы находитесь в момент запуска программы, называется гло­
       бальной областью видимости (global scope). Вновь запущенная программа JavaScript
       (прежде,  чем будут вызваны любые функции)  выполняется  в  глобальной области
       видимости. Т а ким образом, все, что вы объявите в глобальной области видимости,
       будет доступно для всех областей видимости в вашей программе.
          Все, что  объявлено  в  глобальной области видимости,  называется глобальными
       переменными, а у глобальных переменных, как известно, очень плохая репутация.
       Открыв любую книгу по программированию вы узнаете, что при использовании гло­
       бальных переменных "земля уйдет из под ваших ног и поглотит вас целиком". Так
       почему же глобальные переменные столь плохи?
          Глобальные переменные вовсе не плохи, это нужная вещь. Плохо, когда глобаль­
       ную область видимости  используют неправильно. Мы уже упоминали, что все до­
       ступное в глобальной области видимости доступно во всех областях видимости. От­
       сюда мораль: глобальные переменные следует использовать рассудительно.


                                                     Глобальная область видимости   1 4 7
   141   142   143   144   145   146   147   148   149   150   151