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

ГЛАВА 7

                                             Обл а с    т ви д и м о с т и
                                                           ь











          Область видимости (scope) устанавливает, где и когда определяются переменные,
       константы и аргументы. Мы уже имеем некоторое представление об области види­
       мости: нам известно, что аргументы функции существуют только в теле функции.
       Рассмотрим следующее.
       function  f (х)  {
           return  х  +  3 ;
       f ( 5 ) ;     11  8
       х ;      1 1   ReferenceError :  х  н  е  определена
          Мы знаем, что переменная х существует очень недолго (только при вычислении
       х  +  3 ), а за пределами тела функции х как будто не существует. Таким образом, мы
       говорим, что область видимости переменной х - это функция f.
          Когда мы говорим, что область видимости переменной - это данная функция, мы
       должны помнить, что формальных аргументов в теле функции не существует,  пока
       функция не будет вызвана (и они не станут, таким образом, фактическими аргумен­
       тами). Функция может быть вызвана многократно, и при каждом вызове ее аргументы
       появляются и затем выходят из области видимости, когда функция завершается.
          Мы также принимаем как очевидное, что переменные и константы не существу­
       ют, пока мы их не создадим. Таким образом, они не находятся в области видимости,
       пока мы не объявляем их с ключевым словом let или const  (var - это частный
       случай, который мы рассмотрим далее в этой главе).

                  В  некоторых  языках  есть  явное  различие  между  объявлением
                  (declaration)  и  определением  (definition).  Как  правило,  объявление
                  переменной означает, что вы объявляете о ее существовании, указав
                  компилятору ее идентификатор. Определение, напротив, обычно оз­
                  начает объявление и  присвоение значения переменной. В  JavaScript
                  эти два термина являются синонимами, поскольку всем переменным
                  присваиваются значения при их объявлении (в противном случае им
                  неявно присваиваются значения undefined).
   139   140   141   142   143   144   145   146   147   148   149