使用数字添加操作

时间:2017-06-10 16:46:41

标签: javascript concatenation addition

我将此代码编写为计算器的一部分,用于练习。它主要按预期工作。

但是,添加操作会连接两个数字而不是添加它们。为什么呢?

function calcApp (aNumber, bNumber) {
    var a = prompt("Enter A number :");
    var b = prompt("Enter B number :");
    var mathSign = prompt("Enter Math Sign :");

    aNumber = a;
    bNumber = b;

    if (mathSign == "+") {
        alert(a + b);
    }
    else if (mathSign == "-") {
        alert(a - b);
    }
    else if (mathSign == "*") {
        alert(a * b);
    }
    else if (mathSign == "/") {
        alert(a / b);
    }
    else {
        prompt("Enter a valid Math sign!!")
    }
}
calcApp();

2 个答案:

答案 0 :(得分:4)

prompt返回一个字符串。在字符串上使用+运算符时,它们会连接在一起。

您必须获取用户输入的数字值。您可以通过各种不同的方式实现这一目标:

var str = '5.4';

console.log(parseInt(str, 10)); // parse integer from decimal numeric string
console.log(parseFloat(str));
console.log(+str);
console.log(Number(str));

答案 1 :(得分:1)

prompt将返回一个字符串。您需要将其转换为数字。

您可以使用Number对象将字符串转换为数字。

如果您使用Number对象,请检查NaN(非数字)。例如,Number('55 abc')会返回NaN

小心使用parseInt时会删除十进制数字。例如,parseInt('12 .99')返回12

以下是使用Number对象

更新的代码
function calcApp (aNumber, bNumber) {
    var a = prompt("Enter A number :");
    var b = prompt("Enter B number :");
    var mathSign = prompt("Enter Math Sign :");

    aNumber = a;
    bNumber = b;

    //Convert to number
    a = Number(a); <----------
    b = Number(b); <----------

    if (mathSign == "+") {
        alert(a + b);
    }
    else if (mathSign == "-") {
        alert(a - b);
    }
    else if (mathSign == "*") {
        alert(a * b);
    }
    else if (mathSign == "/") {
        alert(a / b);
    }
    else {
        prompt("Enter a valid Math sign!!")
    }
}
calcApp();