2011-10-18 55 views
1

这些可能在JavaScript中?JavaScript变量运算符

我有这样的事情:

var op1 = "<"; 
var op2 = ">"; 

if (x op1 xval && y op2 yval) { 
console.log('yay'); 
} 

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

回答

2

不是直接的,但你可以创建这样一个功能:

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

我喜欢这个解决方案,聪明 – texasCode

0

这不是很好,但可能:

var op1 = "<"; 
var op2 = ">"; 

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

也看到我的jsfiddle
我宁愿bobbymcr回答。

4

那是不可能的,但这是:

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)) 
{ 
    /* ... */ 
} 
0

你可以做这样的事情。

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