This question has been asked before but I still don't get the understanding
Set value of variable in the if block. Access value outside if block
In my case I decleared a variable outside the if block var title, artist, album, year but when I accessed it outside the if block filedata.push({fileName: file.name, location: path, title: title,  artist: artist, album: album, year: year}) it says undefined
function selectMusic() {
  const fileList = songs.files
  for (let i=0; i < fileList.length; i++) {
    let file = fileList.item(i)
    var path = (window.URL || window.webkitURL).createObjectURL(file)
    var reader = new FileReader();
    var title, artist, album, year
    reader.onload = function(e) {
      var dv = new jDataView(this.result);
      // "TAG" starts at byte -128 from EOF.
      if (dv.getString(3, dv.byteLength - 128) == 'TAG') {
        title = dv.getString(30, dv.tell());
        artist = dv.getString(30, dv.tell());
        album = dv.getString(30, dv.tell());
        year = dv.getString(4, dv.tell());
      } else {
        console.log('id3 metadata not found')
      }
    };
    reader.readAsArrayBuffer(file);
    filedata.push({fileName: file.name, location: path, title: title, 
    artist: artist, album: album, year: year})
    //console.log(file.name)
    console.log(filedata)
  }
  //const arr = Array.from(fileList)
  // Load song initially
  loadSong(filedata[songIndex]);
}
