Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Testando o operador soma

Ola a todos,

estava testando algumas possibilidades de códigos com base neste curso, e percebi que quando faço uma soma de duas variáveis ele as concatena ao inves de somar, achei uma solução no stackoverflow descrita abaixo:

res.textContent = +num1 + +num2;

Colocando o + na frente de cada variavel para explicitar que ela é um numero.

Gostaria de saber se esta é a melhor forma de realizar esta operação considerando as boas práticas no JS.

Obrigado!

4 respostas
solução!

Oi Lucas, tudo bom?

Acredito que a melhor abordagem seja converter essas strings em numeros. Para isso você pode usar a função parseInt(). Algo como:

var num1 = '1';
var num2 = '2';
var textContent = "";
textContent = (parseInt(num1) + parseInt(num2));
console.log(textContent); // retorna 3

Abraço e bons estudos =)

Olá, Lucas.

O operador + é o que faz a concatenação de strings. No seu caso, essas variáveis são do tipo string, mesmo contendo valores numéricos.

Você já apresentou uma solução, e o André mostrou outra que deixa um pouco mais claro o que está acontecendo.

Tome sempre cuidado com os tipos de dados ao fazer operações matemáticas em JavaScript. Alguns resultados podem ser inesperados.

Vide: http://umlcomics.com.br/index.php/2017/08/30/porque-o-javascript-pode-ser-complicado-para-iniciantes/

De qualquer forma o conhecimento é valido. nunca tinha visto esse lance de colocar o + na frente.

É interessante sempre fazer o "parse" pois, no JavaScript (que não é uma linguagem fortemente tipada) não seria necessária a transformação; porém, caso a pessoa se habitue, sentirá menos a transição para outra linguagem exigente.

O mesmo se dá com linguagens que não necessitam a inicialização/declaração de variáveis. Quando passar para uma linguagem exigente, não sente a transição.

Existem boas práticas na linguagem e boas práticas universais.

Outra coisa é quando for minificar o código. Será que não dá pau? (tem que testar). Uma coisa é usar "+ +" (com espaço) e outra é usar "++" (sem espaço).

Abraço