JavaScript передать переменную из одной функции в другую

Нужно передать переменную id из одной функции в другую. При выполнении получаю ошибку в строке return id; Uncaught (in promise) ReferenceError: id is not defined

async function getId() {
    try {
        let response = await fetch(proxyurl + url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json;charset=utf-8',
                'Authorization': 'Bearer ' + token
            },
        });

        let result = await response.json();
        for (let i = 0; i <= result.length; i++) {
            console.log(result[i].id);
        }
        id = result[i].id
        document.getElementById('arr').textContent = (id)

        //let urlIssue = 'https://sad.myjetbrains.com/youtrack/api/issues/2-24634?fields=summary,description';

        console.log(id);
        let objSel = document.getElementById('task')
        objSel.options[i] = new Option(id);


    } catch (err) {
        //console.error(err);
    }
    return id;
};

Ответы (2 шт):

Автор решения: fortavey

Возвращайте id внутри try{}. Id обьявлен внутри блока, так что снаружи его не существует

→ Ссылка
Автор решения: qRi

Можно использовать конструкцию return new Promise(). Тогда можно получить получить id или через функцию или через .then()

async function getId() {
  return new Promise( async(resolve, reject) => {
     let id; //объявляем переменную id
    try {
        let response = await fetch(proxyurl + url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json;charset=utf-8',
                'Authorization': 'Bearer ' + token
            },
        });

        let result = await response.json();
        for (let i = 0; i <= result.length; i++) {
            console.log(result[i].id);
        }
        id = result[i].id // вот теперь мы сможем редактировать id
        document.getElementById('arr').textContent = (id)
        console.log(id);
        let objSel = document.getElementById('task')
        objSel.options[i] = new Option(id);

        resolve( id );
    } catch (err) {
        console.error(err);
    }
    
  })
};


async function anotherFunc() {
  const id = await getId(); // ждем пока пройдет resolve для нашего ид

  console.log( id );
};

const id = getId()
id.then( data => {
  console.log( data ); //data = то, что будет после выполнения resolve(id)
}) 

→ Ссылка