Is there anyway to convert a string to a condition inside if statement:
example:
var condition = "a == b && ( a > 5 || b > 5)";
if(condition) {
alert("succes");
}
Is there anyway to convert a string to a condition inside if statement:
example:
var condition = "a == b && ( a > 5 || b > 5)";
if(condition) {
alert("succes");
}
A safer alternative to eval()
may be Function()
.
var condition = "4 == 4 && ( 10 > 5 || 9 > 5)";
var evaluate = (c) => Function(`return ${c}`)();
if(evaluate(condition)) {
alert("succes");
}
eval()
is a dangerous function, which executes the code it's passed with the privileges of the caller. If you runeval()
with a string that could be affected by a malicious party, you may end up running malicious code on the user's machine with the permissions of your webpage / extension. More importantly, a third-party code can see the scope in whicheval()
was invoked, which can lead to possible attacks in ways to which the similarFunction
is not susceptible.
You can use new function
let a = 6;
let b = 6
var condition = "a == b && ( a > 5 || b > 5)";
let func = new Function('a','b', `return (${condition})` )
if(func(a,b)) {
alert("succes");
}
eval
can help, but try to avoid using it
let a = 6;
let b = 6
var condition = "a == b && ( a > 5 || b > 5)";
if (eval(condition)) {
alert("succes");
}
use eval
:
var condition = "4 == 4 && ( 10 > 5 || 9 > 5)";
if(eval(condition)) {
alert("succes");
}
Convert your data and condition to JSON
Then set the condition by hand:
var json = '{"a":20, "b":20, "max":5}'; //Max is your condition
var data = JSON.parse(json);
var a = data.a;
var b = data.b;
var max = data.max;
if(a == b && ( a > 5 || b > 5)) {
console.log("foobar");
}