循环里的定时器如何保存当前循环的值

var value = 0

      while(value++ < 100){

        setTimeout(() => console.log(value),100)

      }

想要结果是1到100,请问怎么改写?谢谢


小疑问:

下面这种实现


var value = 0

while(value++ < 100){

    setTimeout((val => console.log(val))(value),100)

}

为什么会在最后的100之后打出一个大值呢?


慕码人2483693
浏览 531回答 2
2回答

眼眸繁星

需要分配新的内存,不然每次console.log都是输出同一块内存,自然是同一个值。var value = 0;while (value++ < 100) {&nbsp; &nbsp; (function (v) {&nbsp; &nbsp; &nbsp; &nbsp; setTimeout(() => console.log(v), 100);&nbsp; &nbsp; })(value)}

潇潇雨雨

let value = 0;while(value++ < 100){&nbsp; &nbsp; let thisValue = value;&nbsp; &nbsp; setTimeout(() => console.log(thisValue),100);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript