1

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

(function(){
    this.var1 = function(){
},

this.var2 = function(){

};

return function(){

};

})();

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

kertAW
  • 2,443
  • А что именно непонятно? В первых скобках — определение функции, финальная пара скобок — её вызов. – VladD Jan 15 '15 at 18:35

3 Answers3

3

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

DreamChild
  • 36,244
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)

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

ΝNL993
  • 3,453
0

Насколько я понимаю, this ссылается на объект, методом которого функция является. Если она не является методом пользовательского объекта, то this ссылается на window

xany
  • 1