Я понимаю зачем нужен модуль и вобще зачем нужна инкапсуляция. Однако никак не могу понять чем обусловлен его синтаксис (function(){ код })().
Откуда берутся и что делают скобки вокруг функции?
Зачем и как мы вызываем анонимную функцию (как я понимаю именно это делают круглые скобки сразу после {})?
Почему при создании библиотек (например для jQuery) мы пишем (function(){ код })(jQuery)?
IIFE можно вызвать разными способами.
Сложилось так, что обычно IIFE обёртывают в скобки; это необходимо чтобы явно дать понять синтаксическому анализатору что тут будет выражение, а не объявление функции.
Иначе, встретив function, начнётся разбор объявления:
(function () { /* ... */ })();
(function () { /* ... */ }());
(() => { /* ... */ })(); // В стрелочных функциях скобки разрешены только снаружи
Хотя скобки не обязательны, эти варианты так же работают:
!function () { /* ... */ }();
~function () { /* ... */ }();
-function () { /* ... */ }();
+function () { /* ... */ }();
void function () { /* ... */ }();
Если из контекста ясно что тут должно быть именно выражение, явно указывать уже не требуется:
var f = function () { /* ... */ }();
true && function () { /* ... */ }();
0, function () { /* ... */ }();
Wiki
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости