写BUG的派大星

Patrick Star

  • 首页
  • 归档

  • 搜索
设计模式 Gis Kafka Druid 微信小程序 Java 开源项目源码 物体识别 机器学习 Mybatis 微服务 Feign OpenVPN CSS Streamsets CDH SpringCloud SpringBoot maven 分布式 Shell Tree Linux js WebSocket 多线程 集群 Hadoop 大数据 JDK ElasticSearch MySQL 数据库 Redis Http Nginx

For循环内部的var与let

发表于 2020-04-15 | 分类于 前端 | 0 | 阅读次数 815

由于var命令存在变量提升而且作用域为整个函数,无法被for循环隔离,导致在for循环内部新建变量时,作用域也是所在函数。

在循环下载文件时,用到了如下代码

            for(let i = 0; i < len; i++) {
                let url = "/personFile/download?rowId=" + data[i];
		//使用var关键字导致了一个坑
                var x=new XMLHttpRequest();
                x.open("GET", url, true);
                x.responseType = 'blob';
                x.onload=function(e){
                    download(x.response, decodeURIComponent(x.getResponseHeader("fileName")),"");
                };
                x.send();
            }

结果就是循环下载时总是错乱的,毫无规则,有时获取到的fileName是null,有时又会获取到重复的文件名

修改为let后解决。

  • 本文作者: Patrick
  • 本文链接: https://www.write1bug.cn/archives/for循环内部的var与let
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 设计模式 # Gis # Kafka # Druid # 微信小程序 # Java # 开源项目源码 # 物体识别 # 机器学习 # Mybatis # 微服务 # Feign # OpenVPN # CSS # Streamsets # CDH # SpringCloud # SpringBoot # maven # 分布式 # Shell # Tree # Linux # js # WebSocket # 多线程 # 集群 # Hadoop # 大数据 # JDK # ElasticSearch # MySQL # 数据库 # Redis # Http # Nginx
关于WebSocket
Mysql实现有则更新无则插入操作
  • 文章目录
  • 站点概览
Patrick

Patrick

不是在改BUG,就是在写BUG。

52 日志
9 分类
36 标签
RSS
E-mail
Creative Commons
© 2018 — 2023 Patrick
人生如逆旅|我亦是行人
鲁ICP备18043140号-1