Je suis débutant en javascript et je reçois une sortie inattendue
Voici le code
<script type="text/javascript"> function add(a,b) { x = a+b; return x; } var num1 = prompt("what is your no."); var num2 = prompt("what is another no.") alert(add(num1,num2)); </script>
Il devrait donner la sortie en tant que somme de deux nombres saisis par nous lors de l'incitation, mais il s'agit simplement de concaténer les deux nombres et d'afficher la sortie
C'est parce que la fonction d' prompt
renvoie une String
et non un Number
. Donc, ce que vous faites actuellement, c'est de demander 2 cordes et de les concaténer. Si vous souhaitez ajouter les deux nombres ensemble, vous devrez convertir les chaînes en chiffres:
var num1 = parseFloat(prompt("what is your no.")); var num2 = parseFloat(prompt("what is another no."));
Ou plus simple:
var num1 = +prompt("what is your no."); var num2 = +prompt("what is another no.");
prompt
renvoie une chaîne, pas un numéro. +
Est utilisé à la fois comme opérateur d'addition et de concaténation . Utilisez parseInt
pour transformer les chaînes en nombres à l'aide d'une base spécifique (base de numéros) ou parseFloat
si elles sont censées avoir une partie fractionnée ( parseFloat
ne fonctionne que en décimale). Par exemple:
var num1 = parseInt(prompt("what is your no."), 10); // radix -----^
ou
var num1 = parseFloat(prompt("what is your no."));
Lorsque vous demandez à l'utilisateur, la valeur de retour est une chaîne, un texte normal.
Vous devez convertir les chaînes en nombre:
alert(add(parseInt(num1), parseInt(num2));
La valeur de retour d' prompt
est une chaîne. Ainsi, votre fonction d' add
effectue l'opérateur +
sur 2 chaînes, les concaténant ainsi. Convertissez vos entrées en int
abord pour obtenir le résultat correct.
function add(a,b) { x = parseInt( a ) + parseInt( b ); return x; }
En plus des réponses déjà fournies: si vous utilisez parseInt () / parseFloat (), assurez-vous de vérifier si l'entrée en fait était un nombre entier ou flottant valide:
function promptForFloat(caption) { while (true) { var f = parseFloat(prompt(caption)); if (isNaN(f)) { alert('Please insert a valid number!'); } else { return f; } } } var num1 = promptForFloat('what is your no.'); // ...