关于js console.log拆分信息输出

封装一个函数,实现以下功能
// console.log( fn(9) );      // 输出 9 => 9
// console.log( fn(23) );     // 输出 23 => 2 + 3 => 5
// console.log( fn(2349) );   // 输出 2349 => 2 + 3 + 4 + 9 => 18 => 1 + 8 => 9
// console.log( fn(439331) ); // 输出 439331 => 4 + 3 + 9 + 3 + 3 + 1 => 23 => 2 + 3 => 5

求解答,刚刚开始学


function fn(num, hasPre = false) {
  if (num < 10) return hasPre ? num : `${num} => ${num}`
  const tokens = num.toString().split('')
  return `${num} => ${tokens.join(' + ')} => ${fn(tokens.reduce((res, cur) => {
    res += cur * 1
    return res
  }, 0), true)}`
}

console.log(fn(9));
console.log(fn(23));
console.log(fn(439331));