动态JavaScript If语句

动态JavaScript If语句,javascript,dynamic,logic,eval,Javascript,Dynamic,Logic,Eval,在PHP中,我可以做到: // $post = 10; $logic = >; $value = 100 $valid = eval("return ($post $logic $value) ? true : false;"); 因此,上面的陈述将返回false 我可以用JavaScript做类似的事情吗?谢谢 Darren.JavaScript也有一个eval函数: 是的,javascript中也有eval。对于大多数应用来说,使用它被认为不是很好的实践,但我也无法想象它是在php

在PHP中,我可以做到:

// $post = 10; $logic = >; $value = 100
$valid = eval("return ($post $logic $value) ? true : false;");
因此,上面的陈述将返回false

我可以用JavaScript做类似的事情吗?谢谢


Darren.

JavaScript也有一个eval函数:


是的,javascript中也有
eval
。对于大多数应用来说,使用它被认为不是很好的实践,但我也无法想象它是在php中

var post = 10, logic = '>', value = 100;
var valid = eval(post + logic + value);

如果您想避免使用
eval
,而且JavaScript中只有8个函数,那么编写一个小函数就相当简单,根本不需要使用
eval

function compare(post, operator, value) {
  switch (operator) {
    case '>':   return post > value;
    case '<':   return post < value;
    case '>=':  return post >= value;
    case '<=':  return post <= value;
    case '==':  return post == value;
    case '!=':  return post != value;
    case '===': return post === value;
    case '!==': return post !== value;
  }
}
//...
compare(5, '<', 10); // true
compare(100, '>', 10); // true
compare('foo', '!=', 'bar'); // true
compare('5', '===', 5); // false
函数比较(post、运算符、值){
开关(操作员){
案例'>':返回post>值;
案例“=”:返回post>=值;

case'有点晚了,但您可以做以下操作:

var dynamicCompare = function(a, b, compare){
    //do lots of common stuff

    if (compare(a, b)){
        //do your thing
    } else {
        //do your other thing
    }
}

dynamicCompare(a, b, function(input1, input2){ return input1 < input2;}));
dynamicCompare(a, b, function(input1, input2){ return input1 > input2;}));
dynamicCompare(a, b, function(input1, input2){ return input1 === input2;}));
var dynamicCompare=函数(a、b、compare){
//做很多普通的事情
如果(比较(a,b)){
//做你的事
}否则{
//做你的另一件事
}
}
动态比较(a,b,函数(input1,input2){返回input1input2;});
动态比较(a,b,函数(input1,input2){返回input1==input2;});

为什么要这样做?另外,
$post$logic$value
返回一个布尔值,因此不需要
?true:false
…我喜欢编码的无限可能性。很酷的缩写。注意:这不安全。
var dynamicCompare = function(a, b, compare){
    //do lots of common stuff

    if (compare(a, b)){
        //do your thing
    } else {
        //do your other thing
    }
}

dynamicCompare(a, b, function(input1, input2){ return input1 < input2;}));
dynamicCompare(a, b, function(input1, input2){ return input1 > input2;}));
dynamicCompare(a, b, function(input1, input2){ return input1 === input2;}));