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

