在我选择了选项1之后,我添加了100之后的数字,结果就像这个100100
这是代码:
var userAmount;
var userMoney = 100;
var totalMoney;
alert("1. Add");
alert("2. Subtraction");
var userOption = prompt("Enter your selection: ");
if (userOption == 1) {
userAmount = prompt("Amount: ");
var totalMoney = userMoney + userAmount;
alert("Total is " + totalMoney);
}
else {
userAmount = prompt("Amount: ");
var totalMoney = userMoney - userAmount;
alert("Total is" + totalMoney);
}
答案 0 :(得分:2)
因为在使用+
时存在隐式转换。在您的情况下,+
实际上是连接值。
函数 prompt 会返回一个字符串,因此当您将其添加到int时,它会连接这些值。它将值作为字符串并连接值而不是添加它。
MDN说:
字符串运算符
除了可以在字符串上使用的比较运算符 值,连接运算符(+)连接两个字符串值 在一起,返回另一个字符串,它是两者的结合 操作数字符串。例如,“my”+“string”返回字符串“my 字符串”
你需要像Number(userAmount)
那样投射它:
var totalMoney = userMoney + Number(userAmount);
或
userAmount = parseFloat(prompt("Amount: "));
因此您需要将两个值都转换为int,以便+
运算符表现为加法而不是字符串连接。
答案 1 :(得分:2)
JavaScript 新手的常见错误是他们忘记了几乎从用户输入中获取的每个值都是 String 。在使用加法+
运算符之前,您需要将这些转换为数字。可以使用unary +
或parseFloat
进行此转换,例如
userAmount = parseFloat(prompt("Amount: "));
在 JavaScript 中使用字符串时,+
运算符实际上是字符串连接
答案 2 :(得分:2)
您需要先将值转换为整数。尝试使用parseInt()
变化:
var totalMoney = userMoney + userAmount;
到此:
var totalMoney = parseInt(userMoney, 10) + parseInt(userAmount, 10);
答案 3 :(得分:1)
那是因为用户给定的号码实际上是一个字符串。
修复它的一种快速方法是输入:
var totalMoney = userMoney + userAmount * 1;