将字符串转换为 javascript 中的操作

Translate String to operation in javascript

有没有办法翻译类似以下逻辑操作(由于用户输入而使用字符串)?还是我必须检查每一种可能性? (> < => == =< 等)

var x = 5;
var y = 3;
var operator = '>'

if (x operator y)
  doSomething();

    |
    |
    v

if (x > y)
  doSomething();

你可以使用 eval,只要你知道它是邪恶的。尽管您绝对应该检查输入是否有效,例如检查它是否仅包含 '><=' 字符。

是的,有一个对象和适当的功能,比如

var comparer = {
    '>': function (a, b) { return a > b; }
};

使用:

if (comparer[operator](x, y)) {
    doSomething();
}

你应该改变你的方式。
使用 eval 时,您必须将所有运算符列入白名单并清理两个输入。

根据您的需要构建您自己的界面。
可能会 switch:

switch (operator) {
  case '>': if (x > y) doSomething();
}

可能更抽象一些像:

ifArg(x).relatedWith(y).as(operator).then(doSomething);  

您甚至可以编写自己的小型解释器(parser/lexer),您的用户可以在上面编写程序。

It will be used in an web application where users can create there own small (simple) applications for the use of data. – Mathieu Brouwers

你不应该在这里使用的是eval