jQuery如果语句与variablesmath运算符
所以我正在寻找类似于这个问题的python if语句与variablesmath运算符,但在jQuery / Javascript中
基本上类似
var one = "4"; var two = "6"; var op = "=="; if (one op two) { //do something }
这可能吗?
你可以定义很多二元函数:
var operators = { "==": function(a,b){return a==b;}, "<=": function(a,b){return a<=b;}, ">=": function(a,b){return a>=b;}, "<": function(a,b){return a<b;}, ">": function(a,b){return a>b;}, … }; var one = "4", two = "6", op = "=="; if (op in operators && operators[op](+one, +two)) { //do something }
如果你不想生成如此庞大的对象并且没有复杂的function,那么你也可以在运行中生成它们(使用一些eval
魔术):
var validOps = /^([!=<>]=|<|>)$/, operators = {}; function check(op, x, y) { if (arguments.length > 1) return check(op)(x, y); if (op in operators) return operators[op]; if (validOps.test(op)) return operators[op] = new Function("a","b","return a "+op+" b;"); return function(a, b){return false;}; } if (check("==", 4, 6)) { // do something }
你可以使用eval(),但它应该是一个string,可以评估为JavaScript来获得所需的结果。
现场演示
if (eval(one + op + two)) { //do something }
如果你有一个操作(也称为函数 ),你想要在两个variables上执行,那么你只需要定义它:
var operations, a, b, op; operations = { '==': function (a, b) { return a == b; }, '&&': function (a, b) { return a && b; }, '||': function (a, b) { return a || b; } }; a = 4; b = 6; op = operations['==']; if (op(a, b)) { //do stuff }
我最近需要这样的东西,最后写了一个函数来parsing操作符。
就像是:
function checkLogic(one, op, two) { switch(op) { case '==': return one == two; // etc } }
你可以使用这个Eval
if(eval(one+op+two)){ //do something }