Maison >interface Web >js tutoriel >Pourquoi JavaScript concatène-t-il au lieu d'ajouter des nombres ?
Concaténation au lieu de sommation dans l'addition numérique
Dans certains scénarios de programmation, tenter de sommer deux valeurs numériques peut entraîner un comportement inattendu où le les nombres sont concaténés au lieu d’être ajoutés. Ce problème survient lorsque les valeurs d'entrée sont traitées comme des chaînes plutôt que comme des nombres.
Considérez le code JavaScript suivant :
function myFunction() { var y = document.getElementById("txt1").value; var z = document.getElementById("txt2").value; var x = y + z; document.getElementById("demo").innerHTML = x; }
Lors de l'exécution de ce code, vous pouvez rencontrer un résultat particulier où 1 2 renvoie "12" au lieu du "3" attendu. Cela se produit car les variables y et z sont initialement récupérées sous forme de chaînes à partir des champs de saisie HTML. JavaScript interprète l'opération de concaténation ( ) différemment pour les chaînes que pour les nombres.
Pour remédier à ce problème et garantir l'ajout de valeurs numériques, il est nécessaire de convertir explicitement les chaînes en nombres avant d'effectuer le calcul. JavaScript fournit une solution simple pour y parvenir en utilisant le " " (opérateur unaire plus).
var x = +y + +z;
En faisant précéder chaque chaîne de " ", elles sont converties en valeurs numériques. Cela permet à JavaScript d'effectuer l'opération d'addition souhaitée, aboutissant à la somme correcte des nombres. Par conséquent, l'extrait de code corrigé serait :
function myFunction() { var y = +document.getElementById("txt1").value; var z = +document.getElementById("txt2").value; var x = y + z; document.getElementById("demo").innerHTML = x; }
Cette modification garantit que les valeurs d'entrée sont traitées comme des nombres, évitant ainsi le problème de concaténation et produisant la somme appropriée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!