尝试添加号码时不能使用+

时间:2013-12-21 13:05:48

标签: 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) {
            userAmount = prompt("Amount: ");
            var totalMoney = userMoney + userAmount;
            alert("Total is " + totalMoney);
        }
        else {
            userAmount = prompt("Amount: ");
            var totalMoney = userMoney - userAmount;
            alert("Total is" + totalMoney);
        }

4 个答案:

答案 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;