вопрос по тесту 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, время: 14:08. |