function add(a, b) {
    // 还需要考虑a, b是数值的情况
    let i = a.length - 1;
    let j = b.length - 1;
    let res = '';
    let carry = 0;
    while (i >= 0 || j >= 0) {
        let x = 0;
        let y = 0;
        let sum = 0;
        if (i >= 0) {
            x = a[i--] - '0'; // 将字符串转为数值
        }
        if (j >= 0) {
            y = b[j--] - '0';
        }
        sum = x + y + carry; // 每次对应位数相加时还需要加上上一位的进位
        if (sum >= 10) { // 如果sum大于10的话,需要产生一个进位
            carry = 1;
            sum -= 10;
        } else {
            carry = 0;
        }
        // 这里是字符串拼接
        res = sum + res;
    }
    if (carry) {
        // 最后还需要将进位值和res进行拼接
        res = carry + res;
    }
    return res;
}

console.log(add('889', '1'));
console.log(add('999', '1'));
console.log(add('123', '321'));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Number.MAX_VALUE // 1.7976931348623157e+308
Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MIN_VALUE // 5e-324
Number.MIN_SAFE_INTEGER // -9007199254740991
1
2
3
4