Ваша ошибка в том , что ваш код не синхронен. Т.е. reader.onload выполняется не сразу и в это время код идёт дальше. data не успевает получить значения перед тем как вывестись в консоль.
Вот вам сразу два решения
- Выводить внутри
load
document.querySelector("#load").addEventListener("click", function() {
let file = document.querySelector("#file").files[0]
let data;
let reader = new FileReader()
reader.onload = function(event) {
data = event.target.result
// console.log(reader.result);
console.log(data);
}
reader.readAsText(file)
})
- Сделать функцию load синхронной
document.querySelector("#load").addEventListener("click", async function() {
/// функция у клика async обратите внимание
let file = document.querySelector("#file").files[0]
let data;
////ваш код
data = await loadFile(file)
console.log(data)
})
function loadFile(file){
return new Promise(resolve=>{
let reader = new FileReader()
reader.onload = function(event) {
let data = event.target.result
resolve(data)
}
reader.readAsText(file)
})
}