При вызове самой себя отсутствует return, что провоцирует новый вызов функции, но связь между вызовами потеряна. Функция выполнится где-то в памяти и возможно еще n-раз вызовет себя, но результат вычислений никто не ждет.
И советую немного форматировать код)
let persistence = (num) => {
let count = 1;
let res = num
.toString()
.split('')
.map(i => count *= Number(i));
if (res[res.length - 1] > 9) {
return persistence(res[res.length - 1]);
}
return res[res.length - 1];
}
console.log(persistence(999));