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).

