data4CB
声明为var
时,会为所有3次迭代返回值2.
但是,当data4CB
声明为let
时,它在第一次迭代中返回0,在第二次迭代中返回1,在第三次迭代中返回2。
你能解释一下这种行为吗?我看过let
vs var
,但仍然不清楚这种行为。我在Chrome的Node.js和控制台中对此进行了测试,两者都显示了相同的行为。
var lazyFunction = function(data4Lazy, cb){
setTimeout(()=>{return cb(null, data4Lazy*4) },0)
}
for(let i = 0; i<3; i++){
let data4Lazy =i;
var data4CB=i
lazyFunction(data4Lazy, (err,data)=>{
if(err) console.log("code broke")
//some processing on data = data+1
console.log( "lazyFunction",data, data4CB)
})
}