Page 153 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 153
} ) ( ) ;
f ) ; / / " раз (а) . "
(
f ( ) ; / / "Меня вызывали 2 раз (а) . "
1 1 " .
Поскольку переменная count надежно защищена в IIFE, нет никакого способа из
менить ее из вне: у функции f всегда будет точный подсчет количества раз, когда она
была вызвана.
Хотя использование переменных из области видимости блока в ЕSб несколько
снизило потребность в IIFE, последнее все еще весьма популярно и полезно, когда
нужно создать замкнутое выражение и возвратить нечто из него.
Область видимости функции и механизм
подъема объявл н и й
е
До введения в ЕSб ключевого слова let переменные объявлялись с ключевым
словом var и имели всю область видимости функции (function scope) (глобальные
переменные, объявленные с ключевым словом var вне функции, имеют то же по
ведение).
Когда вы объявляете переменную с ключевым словом let, она не будет существо
вать в коде до момента ее объявления. Когда вы объявляете переменную с ключевым
словом var, она будет доступна повсюду в текущей области видимости". даже перед
ее оператором объявления. Прежде чем мы рассмотрим пример, запомните, что есть
различие между переменной, которая не объявлена, и переменной, которой присво
ено значение undefined. Необъявленные переменные приводят к ошибке, тогда как
переменные, которые существуют, но имеют значение undefined, - нет.
r
let va l ;
let var2 undef ined;
varl ; / / undefined
r
va 2 ; / / undefined
undefinedVar ; / / ReferenceError : undefinedVar не определена
При использовании ключевого слова let вы получите ошибку, если попытаетесь
обратиться к переменной до ее объявления.
х ; / / ReferenceError : х не определена
let х = 3 ; / / мы никогда не дойдем сюда - ошибка остановит выполнение п р ограммы
К переменным, объявленным с ключевым словом var, напротив, можно обра
щаться прежде, чем они будут объявлены.
х; / / undefined
var х = 3 ;
х ; / / 3
1 5 4 Глава 7. Область видимости

