#settimeout #javascript #замыкания #циклы #функции
for (j=1;j<=5;j ++) { (function(i){ setTimeout(function(){console.log(i)}, j*500) })(j) } Интересует конкретно данный кусок кода, почему задержка не увеличивается на 500 мс? Был бы благодарен если кто нибудь описал принцип работы функции.
Ответы
Ответ 1
Вы по сути одновременно запускаете пять функций, т.е. ваш код идентичен: (function(i){setTimeout(function(){console.log(i)}, 1*500)})(1) (function(i){setTimeout(function(){console.log(i)}, 2*500)})(2) (function(i){setTimeout(function(){console.log(i)}, 3*500)})(3) (function(i){setTimeout(function(){console.log(i)}, 4*500)})(4) (function(i){setTimeout(function(){console.log(i)}, 5*500)})(5) Что приводит к эффекту вывода пяти сообщений в консоль с интервалом 500 миллисекунд.
Комментариев нет:
Отправить комментарий