在javascript

时间:2017-02-18 01:49:17

标签: javascript callback

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)
  })    
}

0 个答案:

没有答案