【问题标题】:JS Arithmetic calculations using eval are being multiplied使用 eval 的 JS 算术计算正在成倍增加
【发布时间】:2018-01-28 22:54:04
【问题描述】:

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

问题: 无论使用哪种运算符,我的数字都在成倍增加。例如,输入 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);

【问题讨论】:

标签: javascript eval


【解决方案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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        • 1970-01-01
        • 1970-01-01
        • 2021-03-29
        相关资源
        最近更新 更多