Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.10.2012, 21:09
Интересующийся
Отправить личное сообщение для alexandr_poskrobka Посмотреть профиль Найти все сообщения от alexandr_poskrobka
 
Регистрация: 26.01.2010
Сообщений: 20

помогите понять код с замыканием
Почему не видна переменная i внутри ф-ции. Знаю что дело в замыкании. Читал но понять не могу. И как можно переделать чтобы i была доступна в function()?
var i=0; 
var arr=[];
for ( i=0; i<5; i++ )
	{

	 arr.push((function()
			{				
				alert(i);
			}
			));
	}
	//alert(i);
	var j=0;
	//alert(arr); //массив содержит  5 expression functions
for ( j=0; j<5; j++ )
	{
		arr[j]();   // вызов expression function  - вызов на месте через выражение  '()'
	}
Ответить с цитированием
  #2 (permalink)  
Старый 04.10.2012, 21:28
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Переменная i и так видна внутри функции, но после выполнения цикла она всегда имеет значение 5.
Ответить с цитированием
  #3 (permalink)  
Старый 04.10.2012, 21:34
Интересующийся
Отправить личное сообщение для alexandr_poskrobka Посмотреть профиль Найти все сообщения от alexandr_poskrobka
 
Регистрация: 26.01.2010
Сообщений: 20

а как сделать чтобы выводились алерты 0,1,2,3,4? в цикле по переменной j именно надо не быть привязаным к i. Как можно модифицировать?
Ответить с цитированием
  #4 (permalink)  
Старый 04.10.2012, 21:40
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

alexandr_poskrobka,
var i=0; 
var arr=[];
for ( i=0; i<5; i++ )
	{

arr.push((function(x) {
 
      return function() {
        alert( x );
      };
 
    })(i));
}
	//alert(i);
	var j=0;
	//alert(arr); //массив содержит  5 expression functions
for ( j=0; j<5; j++ )
	{
		arr[j]();   // вызов expression function  - вызов на месте через выражение  '()'
	}
Ответить с цитированием
  #5 (permalink)  
Старый 04.10.2012, 21:44
Интересующийся
Отправить личное сообщение для alexandr_poskrobka Посмотреть профиль Найти все сообщения от alexandr_poskrobka
 
Регистрация: 26.01.2010
Сообщений: 20

Спасибо то что надо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите расшифровать скрипт Cubinec Общие вопросы Javascript 7 09.12.2011 16:38
помогите начинающему оптимизироват код bookin jQuery 0 19.10.2011 15:10
Помогите реализовать идею shilinpavel Элементы интерфейса 8 07.09.2011 11:14
Выпадающие списки. Помогите подправить код. cardsmoney Элементы интерфейса 6 18.02.2011 16:20
Код калькулятора на JS. помогите с ошибкой! kirill.psl Общие вопросы Javascript 9 26.08.2010 11:38