我正在构建一个Web应用程序,在上传到服务器之前需要进行一些文件验证和编码检查。所以,FileReader对此非常有用,但变量中的值不是持久的,尽管变量是在每个函数之外声明的:我有这个代码,工作单元到达testDesc函数:
var fileDesc1;
var fileDesc2;
window.onload = function () {
checkFile();
testDesc();
}//window onload
function checkFile() {
//input type=file
var file = fileInput.files[0];
var reader = new FileReader();
reader.onload= function (e) {
var contents = reader.result;
fileDesc1 = arrayToString(contents);
fileDesc2 = discoverType2File(fileDesc1);
...
}
reader.readAsArrayBuffer(file);
}
获得文件描述后,我需要在JS代码中的任何位置使用它们,但事实并非如此:
function testDesc(){
//fileDesc1 is empty
encode(fileDesc1);
...
return validatyCheck
}
所有函数都在同一个文件中,但变量是空的。为什么会这样?我以为我认识JS,猜不是。顺便说一句,所有js文件都加载到html body标签的末尾。