1. function bigSum(a, b) {
    2. // 取两个字符串最大长度,方便后续长度较小的前补位
    3. const maxLen = Math.max(a.length, b.length)
    4. // 两数前补位:'0';如:'2'.padStart(4, '0') // '0002'
    5. a = a.padStart(maxLen, '0')
    6. b = b.padStart(maxLen, '0')
    7. let sum = '' // 最终结果
    8. let carry = 0 // 进位
    9. for(let i = maxLen - 1; i >= 0; i--) {
    10. const total = parseInt(a[i]) + parseInt(b[i]) + carry
    11. carry = Math.floor(total / 10) // 向下取整,获取进位数
    12. sum = total % 10 + sum
    13. }
    14. // 两数相加超过最大字符串长度
    15. if (carry !== 0) {
    16. sum = '' + carry + sum
    17. console.log('两数相加超过最大字符串长度')
    18. }
    19. return sum
    20. }
    21. // let a = "9007199254740991";
    22. // let b = "12345678999999999";
    23. // bigSum(a, b) // "21352878254740990"
    24. let a = "1";
    25. let b = "999999999999";
    26. bigSum(a, b) // "1000000000000"