list = [1000,2000,3000,4000];
for (var i = 0; i < 4; i++) {
setTimeout(console.log('Hello'), list[i]);}
为什么这段代码在列表中的时间后没有打印出'Hello'?
答案 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);
}