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

Маскировка переменной

          Популярным источником недопонимания являются одноименные переменные
       или  константы  в  разных областях видимости.  Когда области  видимости  следуют
       одна за другой, все относительно просто.


           1 1   блок  1
                        е
           const  х  =  ' Ы  u ' ;
           console . log (х) ;   / /  выводит  "Ыие "
       console . l og ( typeof  х) ;  1 1   выводит  "undefined";  х  вне  области  видимости
       {
           1 1   блок  2
           const  х  =  3 ;
                     g
           console . l o ( x ) ;   1 1   ВЫВОДИТ  ,,3,,
       console . l og ( t ypeof  х) ;  // выводит  "undefined";  х  вне  области  видимости

          Здесь вполне понятно, что есть две разные переменные, обе по имени х, но в раз­
       ных областях видимости. Т е перь рассмотрим, что происходит во вложенных областях
       видимости.


           //  внешний  блок
           let  х  =  ' Ы  u ' ;
                       е
           console . l o ( x ) ;   1 1   выводит  "Ыие "
                     g
           {
               1 1   внутренний  блок
               let  х  =  3 ;
               console . l o ( x ) ;  / /  выводит  "3 "
                        g
           console . log (х) ;   / /  выводит  "Ыие"

       console . l og (typeof  х ) ;   1 1   выводит  "undefined";  х  вне  области  видимости

          Этот пример демонстрирует маскировку переменной (variaЬle masking). Перемен­
       ная х  во внутреннем блоке отличается от таковой во внешнем блоке (хотя и имеет
       такое же имя), что в действительности маскирует  (или  скрывает), переменную  х,
       определенную во внешней области видимости.
          Здесь  важно понимать, что, когда процесс выполнения входит во внутренний
       блок и определяется новая переменная х, в области видимости находятся обе пере­
       менные; у  нас  просто нет никакого способа обратиться к  переменной из  внешней
       области видимости (поскольку у нее то же имя). Сравните это с предыдущим при­
       мером, где один х входит в область видимости, а затем выходит из нее прежде, чем
       вторая переменная х делает то же самое.



       1 5 0    Глава 7. Область видимости
   144   145   146   147   148   149   150   151   152   153   154