(function(){})(); Что это?

Рейтинг: 1Ответов: 2Опубликовано: 15.01.2015

Начал разбиратся с шаблонизаторами на javascript, и в примерах везде встречаю вот такую запись:

(function(){
    this.var1 = function(){
    
    },
    
    this.var2 = function(){
    
    };
    
    return function(){
    
    };
})();

Не мог бы кто-нибудь рассказать про это. Что это, зачем нужно, как используется, в чём смысл такой записи?

Ответы

▲ 3Принят

Этот синтаксис означает, что анонимная функция сразу же будет вызвана

▲ 1

Это так называемый IIFE (Immediately invoked function expression / выражение мгновенно вызванной функции) или же SEAF (Self executing anonymous function / Само выполняемая анонимная функция). Такой синтаксис часто используется для изоляции каких-либо данных, вот пример с обычным объявлением переменной и её объявлением в IIFE:

var someVariable1 = 'Hello, first world!'

console.log(someVariable1)

(function() {
  var someVariable2 = 'Hello, second world!'
})()

console.log(someVariable2)

Как мы видим получается ошибка, т.к. вторая переменная объявлена в функции и глобально, доступа у нас к ней нет.