var str='true && (true || false) && true';
if (str) {
console . log('true');
} else {
console . log('false');
}
将上面的动态字符串检查为条件为true或false。
答案 0 :(得分:1)
您可以使用eval
功能。一般来说,eval
评估表示为字符串的JavaScript代码。有关详细信息,请查看here。
但是,您应该注意以下注释:您将在上述链接中使用:
eval()
是一个危险的函数,它执行它传递的代码 具有来电者的特权。如果您使用可能>的字符串运行eval()
受到恶意方的影响,您最终可能会在>上运行恶意代码。用户的计算机具有您的网页/扩展程序的权限。
var str='true && (true || false) && true';
if(eval(str)){
console.log('true');
}
else{
console.log('false');
}

答案 1 :(得分:0)
您可以使用小型解析器:
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);
}
所以你可以这样做:
if(evaluate("true && false || false")) alert("works!");