ti-enxame.com

A adição não está funcionando em JavaScript

Eu estou tentando aprender Javascript. Aqui estou confuso com o seguinte código.

http://rendera.heroku.com/usercode/eae2b0f40cf503b36ee346f5c511b0e29fc82f9e

Quando coloco x+y na função, está dando errado. Por exemplo, 2+2=22, 5+7=57

Mas /, *, - estão funcionando. Por que o + não está funcionando? Por favor me ajude. Muito obrigado antecipadamente

18
Theepan K.

Uma ou ambas as variáveis ​​são uma string em vez de um número. Isso torna a concatenação de cadeia de caracteres +.

'2' + 2 === '22';  // true

2 + 2 === 4;  // true

Os outros operadores aritméticos / * - realizarão uma conversão toNumber na (s) string (s).

'3' * '5' === 15;  // true

Uma maneira rápida de converter uma string em um número é usar o operador + unário.

+'2' + 2 === 4;  // true

... ou com suas variáveis:

+x + +y
41
RightSaidFred

+ tem dois usos. Uma é a adição, a outra, no entanto, é a concatenação de strings. Se uma ou ambas as suas variáveis ​​forem uma string, então + irá concatená-las.

Você precisará usar parseInt ou parseFloat para transformar uma string em um número.

6
James Montagne

No Javascript, o operador + pode executar a adição ou a concatenação, dependendo do tipo de seus operandos. Quando números são usados ​​com + ele usa a adição, mas quando as seqüências de caracteres são usadas com + ele concatena (une as seqüências de caracteres)

3
danwellman

isso funciona toda vez

((x*1) + (y*1))
2
chrisrth

Se os números que você está tentando adicionar são 10 e 12, se a soma resultante deve ser 22, então provavelmente você deve fazer isso como

+10 + +12

E o resultado pode ser uma string como 1012 se um ou ambos os números forem uma string.

1
Siddhu

O operador de adição funciona da seguinte maneira:
1) Se pelo menos um operando for uma string, outro é convertido em string e a concatenação é executada;

1 + "2"        // "12"
"2" + "3"      // "23"
"2" + null     // "2null", null is converted to "null"

2) Em outros casos, ambos os operandos são convertidos em números:

1 + null      // 2, null is converted to 0
1 + undefined // NaN, undefined is converted to NaN

Verifique o post o operador de inclusão do JavaScript desmistificado para mais detalhes.

0
Dmitri Pavlutin

Unary plus deve funcionar:

var totalVal = (+2) + (+2);

alert(totalVal);
// result 4
0
aravind3