| 
 вопрос по тесту js не могу понять почему выводит 10 раз по 10????? разве не должно получаться 0 -9? for(var i=0; i<10; i++) { setTimeout(function() { alert(i); }, 100); } | 
| 
 Загнал этот код на jsfiddle.net и компилятор сразу же подчеркнул слово function - функция внутри цикла во внешнем scope может привести к нарушению семантики, конфликтам и непредсказуемым последствиям. - Может быть из-за этого? | 
| 
 osminooge21, Почему это не работает? | 
| 
 Цитата: 
 На момент срабатывания таймера переменная i имеет значение 10. Его-то и будут выводить те таймеры. 
function test() {
	alert(++test.cnt);
	if (test.cnt<10) {
		setTimeout(test,100);
	};
};
test.cnt=0;
setTimeout(test,1000);
 | 
| 
 надо вместо var использовать let или использовать IIFE | 
| Часовой пояс GMT +3, время: 08:15. |