Переменные склеиваются

Возникла проблема, у меня есть 2 переменные (int),но вместо того чтобы сложится, они склеиваются, хотя по сути не должны.

var addTwoNumbers = function(l1, l2) { //Принимает 2 массива
  let result = 0
  let one = l1.reverse().join('') //Переворачиваем массив и преобразуем в строку
  let two = l2.reverse().join('') //Переворачиваем массиви и преобразуем в строку
  return one + two //складываем 
};


console.log(addTwoNumbers([2, 4, 3], [5, 6, 4]))

Я получаю ответ 342465


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

Автор решения: Алексей Шиманский

Ответ находится прямо в вопросе....

В комментариях в коде указано:

Переворачиваем массив и преобразуем в СТРОКУ

А что делает между собой знак плюс со строками?


Как строку преобразовать в число можно подглядеть тут:

https://ru.stackoverflow.com/a/699730/191482

→ Ссылка
Автор решения: edosjoy
var addTwoNumbers = function(l1, l2) { //Принимает 2 массива
  let result = 0
  let one = l1.reverse().join('') //Переворачиваем массив и преобразуем в строку
  let two = l2.reverse().join('') //Переворачиваем массиви и преобразуем в строку
  return +one + +two //складываем 
};

console.log(addTwoNumbers([2, 4, 3], [5, 6, 4]))

Когда вы работаете с двумя строками, интерпретатор не будет заниматься приведением типов - это две строки и этого достаточно. "123" + "123" - конкатенация. Если вы работаете с двумя разными типами данных - тогда да, в дело вступает приведение типов. 123 + "123" - приведение типов.

→ Ссылка