Показать сообщение отдельно
  #33 (permalink)  
Старый 04.09.2012, 02:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

function top(){
	for(var i = 0; i < 10; i++) {
		setTimeout(function() {
			console.log(i);
		}, 1000);
	}
}

Тут всё просто, присмотритесь внимательнее:
function() {
    console.log(i);
}
console.log(i) выводит не конкретное число, а внутреннюю переменную i из области видимости функции top(или глобальной если цикл находится вне функции). А поскольку это происходит через 1000мс(1с), когда функция top уже отработала, то обращаясь к i функция получает значение внутренней переменной i, которое та приобрела к концу работы функции top, т.е. - 10.

Разложить это можно ещё так:
for(var i = 0; i < 10; i++) {}

//спустя 1000мс

console.log(i);
console.log(i);
console.log(i);
console.log(i);
console.log(i);
console.log(i);
console.log(i);
console.log(i);
console.log(i);
console.log(i);



По поводу ru-board.com не скажите, жабаскрипетров нам не так много, а компетентных и подавно.)
__________________
29375, 35

Последний раз редактировалось Aetae, 04.09.2012 в 02:56.
Ответить с цитированием