Следующий код:
(function () {
})();
называется немедленно вызванным функциональным выражением (IIFE).
Это называется функциональным выражением, поскольку ( yourcode )
Оператор в Javascript заставить его в выражении.Разница между функциональным выражением и объявлением функции заключается в следующем:
// declaration:
function declaredFunction () {}
// expressions:
// storing function into variable
const expressedFunction = function () {}
// Using () operator, which transforms the function into an expression
(function () {})
Выражение - это просто набор кода, который может быть оценен до одно значение .В случае выражений в вышеприведенном примере это значение представляло собой один объект функции .
После того, как у нас есть выражение, которое оценивает функциональный объект, мы можем немедленно вызвать функциональный объект с оператором ()
.Например:
(function() {
const foo = 10; // all variables inside here are scoped to the function block
console.log(foo);
})();
console.log(foo); // referenceError foo is scoped to the IIFE
Почему это полезно?
Когда мы имеем дело с большой кодовой базой и / или когда мы импортируем различные библиотеки, увеличивается вероятность конфликта имен,Когда мы пишем определенные части нашего кода, которые связаны (и поэтому используют одни и те же переменные) внутри IIFE, все переменные и имена функций попадают в скобки функций IIFE .Это уменьшает шансы на конфликты имен и позволяет назвать их более небрежно (например, вам не нужно префиксировать их).