如何在评估前检查有效表达式?

时间:2014-12-25 11:41:27

标签: javascript jquery

我的下面的代码在有效的数学表达式时工作正常,但在表达式无效时不起作用。

HTML代码

<button id="calc">Calculate</button>
<p id="demo"></p>

jQuery代码

function myFunction() {
    var x = 10;
    var y = 20;
    var a = eval("x * y") + "<br>";
    var b = eval("2 + 2") + "<br>";
    var c = eval("x + 17") + "<br>";
    var d = eval("x + 17 + ") + "<br>"; //here it is wrong expression throw error
    var res = a + b + c;
    $("#demo").html(res);
}

$("#calc").click(function(){
    myFunction();
});

我的问题是如何在评估表达式之前检查有效的数学表达式?

JS Fiddle

1 个答案:

答案 0 :(得分:4)

在try / catch块中包装表达式求值,并在出现错误时提供挖掘消息:

function myFunction() {
    var x = 10;
    var y = 20;
    var res;

    try {
        var a = eval("x * y") + "<br>";
        var b = eval("2 + 2") + "<br>";
        var c = eval("x + 17") + "<br>";
        var d = eval("x + 17 + ") + "<br>";

        res = a + b + c;
    }
    catch (e) {
        res = 'Expression in invalid.';
    }

    $("#demo").html(res);
}