Зачем нужна функция iife

IIFE (Immediately Invoked Function Expression) — это функция, которая определяется и вызывается немедленно после ее создания. IIFE полезны по нескольким причинам:

Основные преимущества 

1. Изоляция кода:
   Создают новую область видимости, что помогает избежать загрязнения глобального пространства имен. Это особенно полезно при работе с переменными, которые могут конфликтовать с другими частями кода.

2. Создание приватных переменных:
   Переменные, объявленные внутри IIFE, не доступны снаружи, что делает их приватными. Это помогает защитить данные и функции от нежелательного доступа или модификации.

3. Предотвращение конфликтов переменных:
   Поскольку IIFE создают собственную область видимости, переменные внутри них не конфликтуют с переменными в других частях программы.

4. Инициализация кода:
   IIFE часто используются для выполнения однократной инициализации, которая должна произойти сразу после загрузки кода.

Синтаксис IIFE

Может быть объявлена с помощью двух основных синтаксисов:

1. Анонимная функция

```javascript
(function() {
  console.log('This is an IIFE');
})();
```

2. Функция с именем

```javascript
(function namedIIFE() {
  console.log('This is a named IIFE');
})();
```

Примеры

1. Изоляция переменных

```javascript
var i = 10;

(function() {
  var i = 20;
  console.log(i); // 20
})();

console.log(i); // 10
```

В этом примере переменная `i` внутри IIFE не конфликтует с переменной `i` в глобальной области видимости.

2. Создание приватных переменных

```javascript
var counter = (function() {
  var count = 0;

  return {
    increment: function() {
      count++;
      return count;
    },
    reset: function() {
      count = 0;
    }
  };
})();

console.log(counter.increment()); // 1
console.log(counter.increment()); // 2
counter.reset();
console.log(counter.increment()); // 1
```

Здесь переменная `count` является приватной и доступна только через методы `increment` и `reset`.

3. Инициализация кода

```javascript
(function() {
  console.log('IIFE for initialization');
  // Initialization code here
})();
```

IIFE нужны для создания новой области видимости, изоляции кода, создания приватных переменных и предотвращения конфликтов переменных. Они выполняются сразу после объявления и часто используются для инициализации кода.

June 1, 2024, easyoffer