无论如何,是否可以在if语句中将字符串转换为条件:
示例:
var condition = "a == b && ( a > 5 || b > 5)";
if(condition) {
alert("succes");
}
答案 0 :(得分:2)
eval()
可以替代Function()
。
var condition = "4 == 4 && ( 10 > 5 || 9 > 5)";
var evaluate = (c) => Function(`return ${c}`)();
if(evaluate(condition)) {
alert("succes");
}
eval()
是一个危险的函数,它以调用者的特权执行它传递的代码。如果使用可能受到恶意方影响的字符串运行eval()
,则可能会在网页/扩展名的许可下最终在用户计算机上运行恶意代码。更重要的是,第三方代码可以看到调用eval()
的范围,从而可能以类似的Function
不受影响的方式导致可能的攻击。</ p>
答案 1 :(得分:1)
eval
可以帮助您,但请避免使用它
let a = 6;
let b = 6
var condition = "a == b && ( a > 5 || b > 5)";
if (eval(condition)) {
alert("succes");
}
答案 2 :(得分:0)
使用eval
:
var condition = "4 == 4 && ( 10 > 5 || 9 > 5)";
if(eval(condition)) {
alert("succes");
}
答案 3 :(得分:0)
您可以使用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");
}
答案 4 :(得分:0)
将您的数据和条件转换为JSON
然后手动设置条件:
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");
}