// 思路
// 将大整数字符串 分割位数组 循环取最后一位
// 转换成数字相加 然后对10取余 保留个位数字 并拼接之前位数的字符串
// 每次循环判断是否需要往前进一位
function fn(a, b) {
let result = '' // 存储大数字相加结果
let 进位 = 0 // 是否往前进一位
// 将大数字字符串 转换成数组
a = a.split('')
b = b.split('')
// 只要a/b数组不为空 或 仍需要进位 就一直循环
while (a.length || b.length || 进位) {
// 每次循环从a b数组末尾取一位数字
let a_str = a.pop() || 0 // 已经为空的数组 数字为0
let b_str = b.pop() || 0
// 当前位的数字相加后 再加上进位(0或1)
let sum = Number(a_str) + Number(b_str) + 进位
// 当前位总和对10取余 即为当前位实际值 再拼接result字符串
result = (sum % 10) + result
// sum大于9则需要往前进一位
进位 = sum > 9 ? 1 : 0
}
return result
}
// 验证
let a = '123456789'
let b = '12'
console.log(fn(a, b)) // '123456801'
console