所以我有这段代码......
var string = 'qwe';
document.addEventListener('click', function(e){
function bar(b){
var a = string[b];
if (a == 'q') {
console.log('first');
}
if (a == 'w') {
console.log('second');
}
if (a == 'e') {
console.log('third');
}
}
setTimeout( bar(0), 1000 );
});
问题是setTimeout不起作用。单击后立即执行代码。
这很奇怪,因为如果我避免使用闭包,它就会起作用......
setTimeout(function bar(){
var a = string[0];
//...everything else
},1000 );
但这可能会使代码变得混乱/冗余,因为我打算这样做3次。理想情况下,工作代码将是......
setTimeout( bar(0), 1000 );
setTimeout( bar(1), 2000 );
setTimeout( bar(2), 3000 );
但同样,设置timeOut就像这样由于某种原因不起作用:/任何想法为什么?
答案 0 :(得分:0)
setTimeout( bar(0), 1000 );
这里setTimeout需要一个函数,但它得到bar(0)。因此,在尝试初始化bar(0)时,必须使用
setTimeout( () => bar(0), 1000 )
使它工作,因为现在它返回一个函数