function bigSum(a, b) { // 取两个字符串最大长度,方便后续长度较小的前补位 const maxLen = Math.max(a.length, b.length) // 两数前补位:'0';如:'2'.padStart(4, '0') // '0002' a = a.padStart(maxLen, '0') b = b.padStart(maxLen, '0') let sum = '' // 最终结果 let carry = 0 // 进位 for(let i = maxLen - 1; i >= 0; i--) { const total = parseInt(a[i]) + parseInt(b[i]) + carry carry = Math.floor(total / 10) // 向下取整,获取进位数 sum = total % 10 + sum } // 两数相加超过最大字符串长度 if (carry !== 0) { sum = '' + carry + sum console.log('两数相加超过最大字符串长度') } return sum}// let a = "9007199254740991";// let b = "12345678999999999";// bigSum(a, b) // "21352878254740990"let a = "1";let b = "999999999999";bigSum(a, b) // "1000000000000"