Page 148 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 148
Но мы могли бы добиться большего: наши функции greet и getBirthYear все
еще зависят от глобального объекта user, который может быть изменен как-то еще.
Давайте улучшим эти функции таким образом, чтобы они не зависели от глобальной
области видимости.
function greet ( u ser)
console . l o ( ' Hello, $ { user . n am } ! ' ) ;
e
g
funct ion getBirthYear (user) {
return new Date ( ) . g etFullYear ( ) - user . age ;
Т е перь наши функции могут быть вызваны из любой области видимости, и поль
зователь им передается явно (узнав о модулях и объектно-ориентированном про
граммировании, мы увидим лучшие способы решения этой проблемы).
Если бы все программы были так просты, то едва ли имело бы значение, исполь
зуем мы глобальные переменные или нет. Но когда ваша программа насчитывает ты
сячи (или сотни тысяч) строк, вы не можете помнить все области видимости сразу
(или даже только те, что находятся на экране). Поэтому становится критически важ
но не зависеть от глобальной области видимости.
Область видимости блока
Ключевые слова let и const объявляют идентификаторы в области видимости
блока (Ьlock scope). В главе 5 упоминалось, что блок - это список операторов, за
ключенный в фигурные скобки. Поэтому, под областью видимости блока подразуме
ваются только те идентификаторы, которые доступны в пределах блока.
g
м
console . l o ( ' п epeд блоко ' ) ;
{
а
console . l o ( ' внyтpи блок ' ) ;
g
const х = 3 ;
console . l og ( x ) : / / выводит З
console . l o ( ' з a пределами блока ; х=$ { х } ' ) ; // ReferenceError : х н е определена
g
Это автономный блок (standalone Ыосk): обычно блок является частью оператора
управления потоком, такого как i f или for, но это вполне допустимый синтаксис,
блок может быть и автономным. Переменная х определяется в блоке, поэтому по за
вершении блока она выходит из области видимости и считается неопределенной.
В главе 4 упоминалось, что автономные блоки не очень часто приме
няются на практике; они используются для контроля областей в иди -
мости (как мы увидим в этой главе), но это редко необходимо. Одна
ко они очень удобны для объяснения действия областей видимости,
вот почему мы используем их в этой главе.
Область видимости блока 1 4 9

