如何从字符串调用和执行运算符?

The*_*ask 3 javascript operators

例如:

var s = '3+3';
s.replace(/([\d.]+)([\+\-)([^,]*)/g,
        function(all, n1, operator, n2) {
                r = new Number(n1) ??? new Number(n2);
                return r;
        }
);
Run Code Online (Sandbox Code Playgroud)

注意:不使用 eval()

Joe*_*Joe 6

变量运算符可能吗?

不可能开箱即用,但他提供了一个很好的实现,如下所示.德尔南的代码.

var operators = {
    '+': function(a, b) { return a + b },
    '<': function(a, b) { return a < b },
     // ...
};

var op = '+';
alert(operators[op](10, 20));
Run Code Online (Sandbox Code Playgroud)

所以对你的实施

r = operators[operator](new Number(n1), new Number(n2));
Run Code Online (Sandbox Code Playgroud)

  • +1 使用对象来查找运算符函数而不是 if/else 或 switch/case。 (2认同)