Почему оператор += не накапливается ? (на примере функции ввывод обратного числа)

Рейтинг: -1Ответов: 1Опубликовано: 25.02.2023

Есть функция которая выводи числа в обратном порядке.

function reverse(number) {
   number += "";
   let reversnumber = "";
   for (let i = number.length-1; i >=0 ; i--) {
      reversnumber += number[i];
      console.log(reversnumber);
   }
   return {"Обратное число": +reversnumber}
}
console.log(reverse(12345))

Вопрос почему выводит 54321, а не сумму (5+4+3+2+1) 15? Вот эта строчка reversnumber += number[i]; говорит о накапливание переменной. С другой стороны если в коде я поменяю данную строку на reversnumber -= number[i]; мне выводит -15. Почему в первом случае выводит при += 54321, а при -= -15

Ответы

▲ 0

Потому что оператор + или объединяет строки (конкатенирует) или складывает числа, а оператор - только вычитает числа друг из друга и не взаимодействует со строками.

Но JS отличный язык и полагает что вы это знаете и учитываете, поэтому он скастовывает ваши буквы в цифры и отлично складывает их, чтобы у вас получилось -15

Починить ваш код можно с помощью несложной магии reversnumber += number[i]; заменить на reversnumber += parseInt(number[i]);