尝试添加数字时不能使用 +

IT技术 javascript
2021-02-24 09:10:36

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

因为在使用+. 在您的情况下+,实际上是连接值。

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

MDN说:

字符串运算符

除了可用于字符串值的比较运算符之外,连接运算符 (+) 将两个字符串值连接在一起,返回另一个字符串,该字符串是两个操作数字符串的并集。例如,“我的”+“字符串”返回字符串“我的字符串”。

你需要把它像像这样的Number(userAmount)东西:

var totalMoney = userMoney + Number(userAmount);

或者

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

因此您需要将两个值都转换为 int,以便+运算符表现为加法而不是字符串连接。

@Mr.AZ:欢迎来到Stack Overflow要将解决方案标记为最适合您(提问者),您可以通过单击答案左侧投票箭头正下方的大勾来接受答案。我强烈建议采取快速浏览一下堆栈溢出游览-它只是一个快速的介绍如何将我们的社会运行。祝你好运——很高兴我们能够回答你的问题!
2021-05-07 09:10:36

JavaScript新手的一个常见错误是他们忘记了从用户输入中获取的几乎每个值都是String您需要先将这些转换为数字,然后才能使用加法+运算符。例如,可以使用一元+来完成此转换parseFloat

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

JavaScript 中使用Strings运算符实际上是字符串连接+

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

改变:

var totalMoney = userMoney + userAmount;

对此:

var totalMoney = parseInt(userMoney, 10) + parseInt(userAmount, 10);
你不应该需要转换 userMoney - 它已经是一个数字。
2021-05-12 09:10:36

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

修复它的快速方法是键入:

var totalMoney = userMoney + userAmount * 1;