Показать сообщение отдельно
  #6 (permalink)  
Старый 12.08.2013, 20:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Код обернут в анонимную функию , тут же вызываемую (или как это по-русски называется. В общем immediate function invocation)

(function(){
    // этот код тут же выполнится.
})()


Прием используется для создания области видимости переменных. Что-бы все объявленные переменные не стали глобальными.

Если конструкция не понятна, то можно ее представить как:

// объявили функцию
function _fn() {
   // код
}

// тут же вызвали
_fn()


Но зачем давать имя этой функции если ее можно просто сразу вызвать:

// имя не дадим, оно не нужно
function () {
    // код
}() // тут же вызвали, дописав ()


Но такая конструкция не сработает, из-за особенностей синтаксиса JS.

Поэтому нужно писать либо

(function(){

})()


либо так:

(function(){

}())


Есть и другие варианты. Цель одна - дать понять парсеру что это не декларация функции а функция-выражение.
Ответить с цитированием