web-dev-qa-db-fra.com

L'addition ne fonctionne pas en JavaScript

J'essaie d'apprendre le Javascript. Ici, je suis confondu avec le code suivant.

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

Quand je mets x+y dans la fonction, ça ne va pas. Par exemple 2+2=22, 5+7=57

Mais /, *, - fonctionnent. Pourquoi + ne fonctionne-t-il pas? Aidez-moi, s'il vous plaît. Merci beaucoup d'avance

18
Theepan K.

Une ou les deux variables sont une chaîne au lieu d’un nombre. Cela permet à la + de faire la concaténation de chaînes.

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

2 + 2 === 4;  // true

Les autres opérateurs arithmétiques / * - effectueront une conversion toNumber sur la ou les chaînes.

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

Un moyen rapide de convertir une chaîne en nombre consiste à utiliser l'opérateur unaire +.

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

... ou avec vos variables:

+x + +y
41
RightSaidFred

+ a deux utilisations. L'un est l'addition, l'autre est la concaténation de chaînes. Si l'une de vos variables ou les deux sont une chaîne, + les concaténera.

Vous devrez utiliser parseInt ou parseFloat pour transformer une chaîne en nombre.

6
James Montagne

En Javascript, l'opérateur + peut effectuer une addition ou une concaténation en fonction du type de ses opérandes. Lorsque les nombres sont utilisés avec +, il utilise l'addition, mais lorsque les chaînes sont utilisées avec +, il concatène (joint les chaînes) à la place.

3
danwellman

cela fonctionne à chaque fois

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

Si les nombres que vous essayez d’ajouter sont 10 et 12, si la somme résultante est supposée être 22, alors vous devriez probablement le faire comme

+10 + +12

Et le résultat pourrait être une chaîne telle que 1012 si l'un des nombres ou les deux sont une chaîne.

1
Siddhu

L'opérateur d'addition fonctionne de la manière suivante:
1) Si au moins un opérande est une chaîne, un autre est converti en chaîne et la concaténation est effectuée.

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

2) Dans les autres cas, les deux opérandes sont convertis en nombres:

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

Consultez la publication L'opérateur d'addition de JavaScript démystifié pour plus de détails.

0
Dmitri Pavlutin

Unary plus devrait fonctionner:

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

alert(totalVal);
// result 4
0
aravind3