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");
}
Per MDN:
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");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With