Шаг первый: определитесь, куда именно выводить, обычно это какой-то элемент на странице, div или span с понятным id, например <div id='output'></div>.
Шаг второй: получите этот элемент в js через document.querySelector('#output') или document.getElementById('output'), оба варианта рабочие, разница только в синтаксисе селектора.
Шаг третий: запишите результат функции в свойство textContent этого элемента, если это просто текст, или в innerHTML, если нужно вставить html-разметку вместе со значением. Пример:
function calc() {
const result = 5 * 5;
document.querySelector('#output').textContent = result;
}
calc();
Шаг четвертый: не путайте это с console.log, он пишет только в консоль разработчика, которую видите вы сами при отладке, обычный посетитель сайта её не видит вообще, поэтому если задача показать результат пользователю, console.log тут бесполезен.
Шаг пятый: если функция асинхронная и результат приходит не сразу, например после fetch, записывайте в textContent внутри then или после await, а не сразу после вызова функции, иначе на странице окажется undefined, потому что код побежит дальше не дождавшись ответа.
Шаг шестой: для нескольких значений подряд используйте innerHTML с шаблонной строкой или создавайте элементы через document.createElement, если нужно вставлять их в цикле, простое textContent тут не подойдет.
Шаг седьмой: если элементов несколько и они появляются динамически, например в цикле по массиву товаров, создавайте их через document.createElement, задавайте нужные свойства и добавляйте в контейнер методом appendChild, простой textContent для такого случая не годится, потому что перезапишет всё содержимое контейнера целиком, а не добавит новый элемент рядом с уже существующими.
Ответить на вопрос