Это называется «шаблон модуля» и / или «создание пространства имен». Поэтому у вас есть частная область видимости для ваших вещей (контекст выполнения вызова функции-оболочки, myFunction
в вашем примере), и вы возвращаете объект, на котором есть только то, что вы хотите сделать общедоступным. Эти вещи (например, myInnerFunction1
) имеют доступ к частной информации в функции-обертке, но ничто, использующее полученный объект, не делает.
В шаблоне модуля вы вполне можете ничего не экспортировать, если у вас нет ничего публичного, которое вам нужно предоставить напрямую (например, ваш код полностью автономен, настраивает обработчики событий и т. Д.).