Показать сообщение отдельно
  #5 (permalink)  
Старый 19.12.2011, 23:53
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418


wikipedia


Сообщение от Livanderiaamarum Посмотреть сообщение
первые скобки возвращают то, что находится в них. функцианальное выражение.
если говорить по-русски, то скобки вычисляют то, что находится в них (функциональное выражение - т.к. функция без имени. иначе бы была декларация).

Сообщение от Livanderiaamarum Посмотреть сообщение
потом оператор вызова () применяется к тому что вернули скобки. иными словами ПРОСТО создается функция и просто вызывается. ни какого замыкания нет.
никакого замыкания нет, пока эта функция не инкапсулирует какую-нибудь функцию, которая будет использовать локальные переменные из родительской.

с замыканием :
(function () {
     var myvar;// переменная родительской [[scope]] 
     window.func = function(){ 
          alert(myvar) // использует переменную род. [[scope]]
     }
})();

func(); // undefined.

без :
(function () {
     window.func = function(){ 
          var myvar; // переменная [[scope]] этой функции
          alert(myvar) // использует переменную [[scope]] этой функции.
     }
})();

func(); //undefined.


Сообщение от Livanderiaamarum Посмотреть сообщение
с контекстами
по-умолчанию this равен window. у этой функции кто-то изменил контекст (call,apply) или она является методом/конструктором объекта, созданного с помощью new?

Сообщение от Livanderiaamarum Посмотреть сообщение
со стеками вызовов и.т.п.
функцию вызывает какая-то другая функция?


Livanderiaamarum, дружок, почитай про JavaScript шаблоны. уверен, тебе понравится.

Последний раз редактировалось melky, 19.12.2011 в 23:59.
Ответить с цитированием