ваш код отрабатывает сразу
var xhr = new XMLHttpRequest()
var smileResourc = '';
xhr.open(...)
xhr.send()
xhr.onreadystatechange = ...
// Строки выше отработаны и сразу же начинается выполнение условий !!!
if (typeof smileResourc[smileID] !== "undefined") {
return smileResourc[smileID];
} else {
var error = 'ID was not found, check if the ID was entered correctly';
console.log(error);
}
НО! запрос еще не завершён и переменная smileResourc не установлена. Запрос будет завершён позже.
А - Асинхронность.
Всю работу с этой переменной следует производить внутри коллбэка onreadystatechange.
Для передачи результата во вне тоже можно использовать свой коллбэк
function smileTXT(smileID, callback){
// ...
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) {
return
}
if (xhr.status === 200) {
smileResourc = JSON.parse(xhr.responseText);
callback(smileResourc);
} else {
console.log('err', xhr.responseText)
}
}
}
smileTXT('smileID', function(smileResourc){
console.log(smileResourc); // <- Вот он
if (typeof smileResourc[smileID] !== "undefined") {
// Что-то делаем с smileResourc[smileID];
} else {
var error = 'ID was not found, check if the ID was entered correctly';
console.log(error);
}
});