Page 152 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 152
(
f fuпctioп )
returп о ;
l e t oRef = f ( ) ;
oRef . п ote = "Все же не совсем безопасно ! " ;
Обычно нечто вне области видимости строго недоступно. Функции являются ис
ключением, они предоставляют нам окна в области видимости, которые в противном
случае были бы недоступны. Мы убедимся в важности этого в следующих главах.
Немедленно вызываемые
ь
функционал н ы е выраж н и я
е
В главе 6 ы рассматривали функциональные выражения. Функциональные вы
м
ражения позволяют создавать немедленно вызываемые функциональные выражения
(Immediately Invoked Function Expression - IIFE). IIFE объявляет функцию, а затем
немедленно ее запускает. Т е перь, имея понятие об областях видимости и замкнутых
выражениях, можно обсудить, зачем они могли бы нам понадобиться. IIFE выглядит
следующим образом.
( f uпctioп ( ) {
/ / это тело IIFE
} ) ( ) ;
Мы создаем анонимную функцию, используя функциональное выражение, а за
тем немедленно ее вызываем. Преимущество IIFE в том, что все в ней имеет соб
ственную область видимости, а также, поскольку это функция, она может передать
нечто из области видимости.
coпst message = ( f unction ( )
const secret = "Здесь указан пароль ! " ;
t
return ' П ароль имеет длину $ { secret . leng h } символов . ' ;
} ) ( ) ;
l
conso e . l o g (message ) ;
Переменная secret защищена в области видимости IIFE, к ней нельзя обратить
ся извне. Вы можете возвратить из IIFE все, что хотите, и весьма часто возвращают
массивы, объекты и функции. Давайте рассмотрим функцию, которая способна со
общить о количестве вызовов и в которую нельзя вмешаться.
const f = ( f unction ( )
let count = О ;
return function ( )
return ' М еня вызывали $ { ++count } раз ( а ) . ' ;
Немедленно вызываемые функциональные выражения 1 5 3

