3
var str='true && (true || false) && true';
if (str) {
    console . log('true');
} else {
    console . log('false');
}

Check above dynamic string as a condition true or false.

Mamun
  • 66,969
  • 9
  • 47
  • 59

2 Answers2

1

You could make use of eval function. Generally speaking eval evaluates JavaScript code represented as a string. For further info, please have a look here.

However, you should pay attention of the following remark, that you will in the link mentioned above:

eval() is a dangerous function, which executes the code it's passed with the privileges of the caller. If you run eval() 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.

var str='true && (true || false) && true';
if(eval(str)){
  console.log('true');
}
else{
  console.log('false');
}
Christos
  • 53,228
  • 8
  • 76
  • 108
0

You may use a small parser:

 function evaluate(str){
   //remove all whitespace
   str = str.replace(/\s/g,"");
   //Parse stuff in brackets first:
   const first = str.indexOf("("), last = str.lastIndexOf(")");
   if(first != -1 && last != -1)
     str = str.substr(0, first) + evaluate(str.substr(first + 1, last)) + str.substr(last + 1);
  //split into or parts
  return str.split("||")
   //parse the or parts
   .map(sub =>
       //Evaluate the &&
       sub.split("&&")
          .every(el => el === "true")
   //evaluate the or parts
   ).some(e => e);
 }

So you can do:

 if(evaluate("true && false || false")) alert("works!");
Jonas Wilms
  • 132,000
  • 20
  • 149
  • 151