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

标签 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

最佳答案

在 try/catch block 中包装表达式评估,并在出现错误时提供有用的消息:

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);
}

关于javascript - 如何在评估前检查有效表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646870/

相关文章:

php - Ajax 从 JSON 返回未定义 - 登录系统和最佳实践

javascript - MVC 表单 Javascript Post 在 Controller 内为空

javascript - 检查是否允许地理定位并获取 Lat Lon

jQuery 多个选择器进入动态属性

javascript - 如何在 PHP 页面中获取 CSS 开关按钮值?

jquery - 将外部 URL 加载到 jQuery Mobile 应用程序的最佳方法

支持多种语言(尽可能多)的 Javascript word tokenizer 库

javascript - 错误 [prerender-spa-plugin] - 无法预呈现所有路线

javascript - js和jquery的OOP框架

javascript - jQuery 只绑定(bind)到 keyup,而不是焦点