使用eval的JS算术计算正在成倍增加

时间:2018-01-28 22:54:05

标签: javascript eval

我正在使用提示创建一个基本计算器。用户输入一个数字,一个操作数和另一个数字,这将给出正确的答案。

问题: 无论使用何种算符,我的数字都会成倍增加。例如,输入5 + 5会给我25的值。

为什么我的eval计算会这样做,即使我已经指定了不同的算术运算符?

我无法弄清楚我的代码是如何/为什么不正确的。也许我忽略了一些至关重要的新手。任何帮助将不胜感激。

    var firstNumber = prompt("Enter a number", "");
    var sign = prompt("Enter an operand", "");
    var secondNumber = prompt("Enter another number", "");

    if (sign = "+") {
        answer = eval(+firstNumber + +secondNumber);
    }

    if (sign = "-") {
        answer = eval(+firstNumber - +secondNumber);
    }

    if (sign = "/") {
        answer = eval(+firstNumber / +secondNumber);
    }

    if (sign = "*") {
        answer = eval(+firstNumber * +secondNumber);
    }
    var answer = document.write("Your answer is" + answer);

3 个答案:

答案 0 :(得分:1)

您在if语句条件中为sign分配值是错误的。这样做

var firstNumber = prompt("Enter a number", "");
var sign = prompt("Enter an operand", "");
var secondNumber = prompt("Enter another number", "");

if (sign === "+") {
    answer = firstNumber + secondNumber;
}

if (sign === "-") {
    answer = firstNumber - secondNumber;
}

if (sign === "/") {
    answer = firstNumber / secondNumber;
}

if (sign === "*") {
    answer = firstNumber * secondNumber;
}
var answer = document.write("Your answer is" + answer);

答案 1 :(得分:0)

您正在分配操作,而不是检查是否相等。您需要使用sign == *sign === *,因为使用sign = "*"只会使符号字面意思*

答案 2 :(得分:0)

当然,你在做 if (sign = "*") 代替 if (sign == "*") 所以最后一次比较每次评估为true