在PHP中,我可以这样做:
// $post = 10; $logic = >; $value = 100
$valid = eval("return ($post $logic $value) ? true : false;");
所以上面的陈述会返回false。
我可以在JavaScript中做类似的事情吗?谢谢!
达伦。
答案 0 :(得分:20)
如果你想避免使用eval
,并且由于JavaScript中只有8个comparison operators,编写一个小函数相当简单,而根本不使用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
答案 1 :(得分:8)
是的,javascript中也有eval
。对于大多数用途来说,使用它并不是一个很好的做法,但我无法想象它是在php中。
var post = 10, logic = '>', value = 100;
var valid = eval(post + logic + value);
答案 2 :(得分:1)
JavaScript也有一个eval函数: http://www.w3schools.com/jsref/jsref_eval.asp
eval("valid = ("+post+logic+value+");");
答案 3 :(得分:1)
有点晚了,但你可以做到以下几点:
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;}));