Êtes-vous sûr que vous ne faites pas:
var a = '30';
var b = '40';
Ici, je montre « 30 » comme une chaîne plutôt que d'un certain nombre, et je me attends Opérateur "+" pour concaténer deux chaînes. Comme il s'agit d'un code artificiel, il se peut que vous ne soyez pas tout à fait sûr de savoir où vos variables ont été attribuées initialement ou quel type elles ont. Vous pouvez le vérifier comme ceci:
var a = '30';
var b = '40';
alert(typeof(a) + '\n' + typeof(b));
Si l'un de ceux qui disent « objet » ou « chaîne » plutôt que « numéro » c'est votre problème. Une façon dont cela pourrait arriver que vous ne vous attendiez pas est avec une entrée. Supposons que vous avez du code comme ceci:
<input id="a" value="30" />
<input id="b" value="40" />
<script language="javascript">
var a = document.getElementById('a').value;
var b = document.getElementById('b').value;
</script>
Ici, la valeur d'une entrée de texte est toujours une chaîne initialement.
Si vous souhaitez convertir une variable à un premier numéro, vous devez utiliser quelque chose comme myVar - 0
-coerce une opération numérique ou les parseInt()
ou parseFloat()
plus formelle fonctions (ne pas oublier le paramètre radix pour parseInt()
). Et vérifiez toujours isNaN()
sur les résultats.
Je suis étonné de voir comment quelqu'un a abaissé cette question. Était-ce parce qu'il y avait une erreur dans le code? Incroyable ... – Victor
S'il vous plaît modifier votre code et renommer la variable "' new' ". Victor a raison, le code affiché comme exemple devrait être fonctionnel et ne pas introduire de nouvelles erreurs. – Boldewyn
Parce que le problème qu'il rencontre ne peut pas être le résultat de ce code, même si le 'new' est corrigé. –