list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
setTimeout(console.log('Hello'), list[i]);}
Почему этот код не выводит «Привет» после времени в списке?
list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
setTimeout(console.log('Hello'), list[i]);}
Почему этот код не выводит «Привет» после времени в списке?
это правильный способ сделать это:
list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
setTimeout(function(){console.log('Hello')}, list[i]);}
потому что setTimeout
принимает функцию обратного вызова, а не инструкцию
setTimeout("console.log('Hello')", list[i]);
- person Alex Kudryashev; 04.05.2016
s saying, don
t, используйте функцию в цикле. Должен ли я использовать другую программу.
- person arij asad; 04.05.2016
Вы вызываете console.log()
немедленно и передаете возвращаемое значение в качестве аргумента setTimeout
.
Вы должны передать функцию. Метод bind()
вернет новую функцию, которая вызывает log
с правильным контекстом и указанными вами аргументами.
setTimeout(console.log.bind(console, 'Hello'), list[i]);
Попробуй это
list = [1000,2000,3000,4000];
for (var i = 1; i <= 3; i++) {
(function(index) {
setTimeout(function() { alert(index); }, i * list[i]);
})(i);
}
console.log
в setTimeout` - person Daniel A. White   schedule 04.05.2016