Можете объяснить пару моментов в коде?

Задача состоит в том, что мне не поддаются моменты в коде. Логика исполнения мне понятна но...Мне непонятна математическая составляющая часть. Код не мой, но очень заинтересовался в его понимании для себя. Помогите пожалуйста разобраться с частью кода под номерами 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;
}


Ответы (0 шт):