Замыкания... почему alert "глючит" ?
Есть 2 фрагмента, каждый из которых через 3 секунды выводит i (от 1 до 10). Но вот почему-то во втором (с alert) порядок нарушен. console.log выводит всё правильно (от 1 до 10.) Почему?
1.
for (var i = 1; i <= 10; i++) {
(function(e) {
setTimeout(function() {
console.log(e);
}, 3000);
})(i);
}
2.
for (var i = 1; i <= 10; i++) {
(function(e) {
setTimeout(function() {
alert(e);
}, 3000);
})(i);
}
|
Keramet,
потому что у вас долгая реакция на кнопку ок, а у Google Chrome мания всё оптимизировать, так как он считает нужным. |
рони, т.е. на других броузерах alert выдаст всё по порядку?
|
Keramet,
да |
Keramet,
уберите for и всё будет по порядку везде и без замыканий :) |
Цитата:
|
Keramet,
одна функция с условием запуска без циклов |
Keramet,
var i = 0;
(function fn() {
i && alert(i);
i++;
i < 11 && setTimeout(fn, 3000);
})();
|
Цитата:
. Почему нельзя просто alert(i); ? (чтобы ноль не выводить?) |
Keramet,
чтобы первый алерт был не сразу а через 3 секунды |
| Часовой пояс GMT +3, время: 15:10. |