javascript字符串表达式,如同条件

时间:2017-02-02 09:53:27

标签: javascript

我正在构建一个字符串,它将被评估为条件,如

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)

2 个答案:

答案 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

我建议你重新考虑你的解决方案,因为当你以不同的方式解决你的问题时,使用字符串作为表达式,实际上是容易出错的,而且确实是最糟糕的做法。

也使用===而不是== (===按预期工作==工作,==不工作)