Можете объяснить пару моментов в коде?
Задача состоит в том, что мне не поддаются моменты в коде. Логика исполнения мне понятна но...Мне непонятна математическая составляющая часть. Код не мой, но очень заинтересовался в его понимании для себя. Помогите пожалуйста разобраться с частью кода под номерами 1,2,3. А так же, для чего приходит carry к общей сумме.) Общий код суммирует строковые числа.
function add(a, b) {
let result_sum_string = '';
let carry = 0;
if (b.length > a.length) {
[a, b] = [b, a];
}
let diff = a.length - b.length;
for (let i = a.length - 1; 0 <= i; i--) {
1 let digits_sum = Number(a.charAt(i)) + Number(b.charAt(i - diff)) + carry;
2 carry = digits_sum > 9 ? Math.floor(digits_sum / 10) : 0;
3 result_sum_string = (digits_sum % 10) + result_sum_string;
}
if (carry) {
result_sum_string = carry + result_sum_string;
}
return result_sum_string;
}