由于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后解决。