网站搜索

javascript - 未定义的数组


  public onChange(event: Event) {
    let files = event.target['files'];
    let list: string[];
    console.log(files);
    for (var i = 0; i < files.length; i++) {
      if (FileReader && files && files.length) {
        let fileReader = new FileReader();
        fileReader.onload = () => {
          let infoFile: string = fileReader.result;   
          list.push(infoFile);         
        };
        fileReader.readAsDataURL(files[i]);
      }
    }
    console.log(list);
    let preview = document.querySelector('img');
    preview.src = list[0];
  };

我在我的 component.ts 中有一个方法,当我点击 type="file" 的输入框时,会调用名为 onChange() 的方法,但当我在控制台中使用 for 循环时,出现数组未定义的消息。我检查了 fileReader.result 并不是空的。为什么会这样?如何解决这个问题,有什么思路吗。

答案#1

你必须先初始化列表:

let list: string[] = [];

当你只是做的时候

let list: string[]

你只是告诉编译器这个变量将是一个字符串数组。但在运行时它是未定义的,因为你无论如何都没有初始化它。