result
накапливает строку, и потом функция её возвращает.
Сначала result — пустая строка:
let result = '';
В цикле, на каждой итерации, к этой строке в хвост приклеивается очередное число (как текст)
// ""
result = `${result}${i}`;
// "1"
// ...
// "1"
result = `${result}${i}`;
// "12"
// ...
// "123"
// "1234"
// "12345"
Ну и в конце эту строку возвращают
return result;
Поэтому если присвоить переменной результат выполнения этой функции, получится что-то типа:
let digits = joinNumbersFromRange(0, 9);
// в переменной digits теперь "0123456789"