У меня есть базовое понимание IIFEs и защищенных / частных / статических ценностей. Изучая JS, я замечаю, что упоминаются IIFE, чтобы сохранить переменные и функции «защищенными». Я также замечаю то же самое для классов PHP, например, для установки свойства для защищенного или частного.
Но зачем все это делать в реальной ситуации? Разве не доступ к переменным или не доступ к свойствам класса не будет иметь тот же эффект?
Бонус, также зачем использовать let и const для ES6 scoping, когда вам просто не нужно обращаться к переменной?
IIFE — это анонимные функции, которые выполняются сразу после их создания (если только они не находятся внутри другого блока кода, который должен ждать вызова). Они полезны для выполнения кода без загрязнения глобального пространства имен. Если вы хотите выполнить задачу один раз, а затем сразу же выбросить переменные, созданные во время выполнения указанной задачи, вам следует обратиться к IIFE.
const
Ключевое слово очень полезно для объявления переменной, которую нельзя изменять. Например: const pi = 3.14159;
Если вы являетесь единственным пользователем кода, который вы пишете, то использование этого типа защиты только поможет читабельности и понимания для вас самих, когда вы вернетесь в будущем, но, в конечном счете, для вас это не нужно, кроме как следование рекомендациям. «
Однако, если другие используют ваш код, вы можете захотеть (или вам нужно) сохранить определенную реализацию в секрете, не только для обеспечения работы, как вы ее создали, но и для того, чтобы избежать случайного слипания со стороны тех, кто реализует ваш код.