for循环中的setTimeout()

时间:2016-05-04 20:23:45

标签: javascript settimeout

list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
    setTimeout(console.log('Hello'), list[i]);}

为什么这段代码在列表中的时间后没有打印出'Hello'?

3 个答案:

答案 0 :(得分:3)

这是正确的方法:

list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
    setTimeout(function(){console.log('Hello')}, list[i]);}

因为setTimeout接受回调函数而不接受指令

答案 1 :(得分:1)

您正在立即调用'"*"' or \"*\" 并将返回值作为参数传递给console.log()

你应该传递一个功能。 setTimeout方法将返回一个新函数,该函数使用正确的上下文和您指定的参数调用bind()

log

答案 2 :(得分:0)

试试这个

list = [1000,2000,3000,4000];
for (var i = 1; i <= 3; i++) {
    (function(index) {
        setTimeout(function() { alert(index); }, i * list[i]);
    })(i);
}