list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
setTimeout(console.log('Hello'), list[i]);}
Защо този код не извежда „Hello“ след времената в списъка?
list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
setTimeout(console.log('Hello'), list[i]);}
Защо този код не извежда „Hello“ след времената в списъка?
това е правилният начин да го направите:
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