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