美文网首页
如何解决 var 在 for 循环中的问题

如何解决 var 在 for 循环中的问题

作者: 前端好有趣 | 来源:发表于2021-05-04 19:50 被阅读0次

问题复现

for (var i = 1; i <= 5; i++) {
  setTimeout(function timer() {
    console.log(i)
  }, i * 1000)
}

预期效果:
1
2
3
4
5

打印结果:
6
6
6
6
6

解决方式

闭包

for (var i = 1; i <= 5; i++) {
    (function (j) {
        setTimeout(function timer() {
            console.log(j)
        }, j * 1000)
    })(i)
}

setTimeout 第三参数

for (var i = 1; i <= 5; i++) {
   setTimeout(
       function timer(j) {
           console.log(j)
       },
       i * 1000,
       i
   )
}

使用 let 定义 i

for (let i = 1; i <= 5; i++) {
    setTimeout(function timer() {
        console.log(i)
    }, i * 1000)
}

相关文章

  • 如何解决 var 在 for 循环中的问题

    问题复现 预期效果:12345 打印结果:66666 解决方式 闭包 setTimeout 第三参数 使用 let...

  • ES6 let var const解析

    let 和 var,const let声明的变量只在let所在的代码块有效 for循环中,var声明的是全局的,l...

  • 批量下载文件

    场景:在for循解环中下载文件最后只会下载最后一个文件,解决方案如下 注意:浏览器并行下载资源限制专业叫法是“浏览...

  • for的嵌套和数值

    for循环的嵌套(重点) 在for循环中有嵌套了一个for循环 for(var a=0;a<10;a++){ ...

  • 第二章⑥跳转语句

    break 使用在switch中或者循环中使用在循环中,表示:结束当前循环(默认最近) continue 使用在循...

  • for嵌套

    for循环的嵌套(重点) 在for循环中有嵌套了一个for循环 for(var i=0;i...

  • ES6 的部分知识点

    为什么要有 let 以前都是用的 var ,let 出现就是解决 var 带来的问题。 var 的缺点: 重复声明...

  • break,continue

    for (var i = 0; i < 5; i++) { if(i==2){ // break; 整个循环中段了...

  • 面试中遇到的平常没注意的问题——持续更新

    面试中遇到的平常没注意的问题 1. for循环中let 声明的变量i 和 var 声明的变量i 有什么区别 le...

  • BUG(2)使用tablePYQT5当tableview自动生成

    问题现象:在循环中为tableview里的button绑定事件,结果发现所有的button事件都是一样的 解决方法...

网友评论

      本文标题:如何解决 var 在 for 循环中的问题

      本文链接:https://www.haomeiwen.com/subject/ddthdltx.html