JavaScript变量操作符



这些在Javascript中可能吗?

我有这样的东西:

var op1 = "<";
var op2 = ">";
if (x op1 xval && y op2 yval) {
 console.log('yay');
}

基本上我需要用户输入操作符,它来自一个选择框。

这是不可能的,但这是:

var operators =
{
    '<': function(a, b) { return a < b; },
    '>': function(a, b) { return a > b; },
    /* ... etc. ... */
};
/* ... */
var op1 = '<';
var op2 = '>';
if (operators[op1](a, b) && operators[op2](c, d))
{
    /* ... */
}

不直接,但您可以创建这样一个函数:

if (operate(op1, x, xval) && operate(op2, x, xval)) {
    console.log('yay');
}
function operate(operator, x, y) {
    switch(operator) {
        case '<':
            return x < y;
    }
}

你可以这样做。

var OpMap = {
          '>': function (a,b) return a>b;},
          '<': function (a,b) return a<b;}
}
if (OpMap[op1](x,xval) && OpMap[op2](y,yval)) {
 console.log('yay');
}

这不是很好,但可能:

var op1 = "<";
var op2 = ">";
if (eval("x"+op1+xval+" && y"+op2+yval)) {
    console.log('yay');
}

请参阅我的jsfiddle。
我更喜欢bobbymcr的答案

最新更新