You don't know js(up & going)


Download 424.95 Kb.
Pdf ko'rish
bet38/53
Sana08.11.2023
Hajmi424.95 Kb.
#1757840
1   ...   34   35   36   37   38   39   40   41   ...   53
Bog'liq
You don\'t know JS(up & going)

___________________________________
(function IIFE
console.log( "Hello!" );
})();
// "Hello!"
___________________________________
Внешние `( .. )`, которые окружают выражение функции `(function IIFE
.. })`, —
это всего лишь нюанс грамматики JS, необходимый для предотвращения того,
чтобы это выражение воспринималось как объявление обычной функции.
Последние `()` в конце выражения, строка `})();` — это то, что и выполняет
выражение с функцией, указанное сразу перед ним.


Может показаться странным, но это не так уж чужеродно, как кажется на первый
взгляд. Посмотрите на сходства между `foo` и `IIFE` тут:
_____________________________________________________
function foo() { .. }
// `foo` выражение со ссылкой на функцию,
// затем `()` выполняют ее
foo();
// Выражение с функцией `IIFE`,
// затем `()` выполняют ее
(function IIFE
.. })();
_____________________________________________________
Как видите, содержимое `(function IIFE
.. })` до ее вызова в `()` фактически
такое же, как включение `foo` до его вызова после `()`. В обоих случаях ссылка
на функцию выполняется с помощью `()` сразу после них.
Так как IIFE — просто функция, а функции создают *область видимости*
переменных, то использование IIFE таким образом обычно происходит, чтобы
объявлять переменные, которые не будут влиять на код, окружающий IIFE
снаружи:
_____________________________________________________
var a = 42;
(function IIFE
var a = 10;
console.log( a );
// 10
})();
console.log( a );
// 42
_____________________________________________________
Функции IIFE также могут возвращать значения:
_____________________________________________________
var x = (function IIFE
return 42;
})();
x;
// 42

Download 424.95 Kb.

Do'stlaringiz bilan baham:
1   ...   34   35   36   37   38   39   40   41   ...   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling