Javascript window.setTimeout不';t读取正确的值
这是密码Javascript window.setTimeout不';t读取正确的值,javascript,settimeout,Javascript,Settimeout,这是密码 var _d=1000; for(var ii=0; ii<4; ii+=1){ console.log(_d*ii); window.setTimeout(applyState(ii,_d),_d*ii); } var=1000; 对于(var ii=0;ii您需要向setTimeout传递一个函数,您当前正在传递applyState(ii,_d)的返回值 试一试 除非applyState实际上不需要参数,在这种情况下,您可以使用 window.setTim
var _d=1000;
for(var ii=0; ii<4; ii+=1){
console.log(_d*ii);
window.setTimeout(applyState(ii,_d),_d*ii);
}
var=1000;
对于(var ii=0;ii您需要向setTimeout传递一个函数,您当前正在传递applyState(ii,_d)的返回值
试一试
除非applyState实际上不需要参数,在这种情况下,您可以使用
window.setTimeout(applyState, _d*ii)
()
运算符调用函数,您应该传递函数本身,否则函数的返回值将传递给setTimeout
函数。但这不会完全解决问题。for
块不会创建新的作用域。您可以使用自调用函数:
var _d=1000;
for(var ii=0; ii<4; ii+=1){
(function(a) {
console.log(_d * a);
window.setTimeout(function() {
applyState(a,_d);
},_d*a);
})(ii);
}
var=1000;
对于(var ii=0;ii,但它不会识别我的变量ii,\u d
var _d=1000;
for(var ii=0; ii<4; ii+=1){
(function(a) {
console.log(_d * a);
window.setTimeout(function() {
applyState(a,_d);
},_d*a);
})(ii);
}