我正在构建一个字符串,它将被评估为条件,如
if (location_val.length == 1) {
condition = condition + " v.location === '" + location_val + "' &&";
} else {
for (var i = 0; i < location_val.length; i++) {
condition = condition + " v.location === '" + location_val[i] + "' && ";
}
}
但javascript会评估变量,如果它不是null,undefined,0或空字符串,如何将字符串计算为表达式?我使用条件变量如下,但由于上述原因,它总是返回true。
if(condition)
答案 0 :(得分:1)
正确构建表达式 - 不使用字符串连接,如下所示:
var condition = (location_val.length == 1 && v.location == location_val)
|| (location_val.every(function(loc){ return v.location === loc; } );
if(condition) {
....
}
我怀疑还有更多内容(在两个字符串的末尾都有&&
),但同样适用于其他所有内容。布尔值可以部分组合
var condition1 = (location_val.length == 1 && v.location == location_val)
|| (location_val.every(function(loc){ return v.location === loc; } );
var condition2 = ...
var condition3 = ...
if(condition1 && condition2 && condition3){
....
}
答案 1 :(得分:-2)
在JavaScript中有eval函数。您可以使用它来将字符串计算为表达式。
eval('3 + 2 === 5') //true
我建议你重新考虑你的解决方案,因为当你以不同的方式解决你的问题时,使用字符串作为表达式,实际上是容易出错的,而且确实是最糟糕的做法。
也使用===而不是== (===按预期工作==工作,==不工作)