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 не скажите, жабаскрипетров нам не так много, а компетентных и подавно.)