在JavaScript中将变量字符串值转换为表达式

Rah*_*rma 5 javascript

我正在尝试将字符串值转换为表达式,以便我可以在if条件中使用它:

var StringVal = '20 > 18 && "yes" == "yes"';

if(StringVal){

    ....
}
Run Code Online (Sandbox Code Playgroud)

有可能这样做,请建议我.

谢谢

Xot*_*750 6

从用户来源获取输入并对其进行评估通常不安全,但您可以使用Function评估,或eval

var StringVal = '20 > 18 && "yes" == "yes"';
if (new Function('return (' + StringVal + ')')()) {
  console.log('ok');
}
Run Code Online (Sandbox Code Playgroud)

eval()和新的Function()是一样的吗?

更新:如果您可以在问题中提供有关您认为必要的更多信息以及实际代码的示例,则可以建议更安全的解决方案.

进一步:In JSON2,eval用于JSON.parse

https://github.com/douglascrockford/JSON-js/blob/master/json2.js#L491

但是你也会注意到在eval调用之前会执行一些消毒.