Javascript 尝试添加数字时无法使用+

Javascript 尝试添加数字时无法使用+,javascript,Javascript,在我选择选项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) { user

在我选择选项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);
        }

因为在使用+时存在隐式转换。在您的例子中,+实际上是连接这些值

该函数返回一个字符串,因此当您将其添加到int时,它将连接这些值。它将两个值都作为字符串,并将值连接起来,而不是添加

他说:

字符串运算符

除了可用于字符串的比较运算符之外 值,则连接运算符+连接两个字符串值 一起返回另一个字符串,该字符串是这两个字符串的并集 操作数字符串。例如,my+字符串返回字符串my 绳子

你需要像数字一样投射它,或者像:

var totalMoney = userMoney + Number(userAmount);


因此,您需要将这两个值都强制转换为int,以便+运算符可以作为加法,而不是字符串串联。

对于刚接触JavaScript的人来说,一个常见的错误是他们忘记了几乎从用户输入中获取的每一个值都是字符串。在使用加法+运算符之前,需要将这些值转换为数字。例如,可以使用或完成此转换

userAmount = parseFloat(prompt("Amount: "));

在JavaScript中使用字符串时,+运算符实际上是字符串串联

您需要首先将值转换为整数。尝试使用parseInt

更改:

var totalMoney = userMoney + userAmount;
为此:

var totalMoney = parseInt(userMoney, 10) + parseInt(userAmount, 10);

这是因为用户给定的数字实际上是一个字符串

解决此问题的快速方法是键入:

var totalMoney = userMoney + userAmount * 1;

prompt返回字符串,而不是numberUse NumberUserMount您不需要转换userMoney-它已经是一个数字。@Mr.AZ:欢迎使用。若要将某个解决方案标记为最适合您的提问者,您可以通过单击答案左侧投票箭头下方的大勾号来接受答案。我强烈建议大家快速了解一下我们的社区是如何运作的——这只是一个简单的介绍。祝你好运-我们能够回答你的问题真是太好了!
var totalMoney = userMoney + userAmount * 1;