2017-03-17 72 views
0

如何评估(true或false)存储在var当成一个字符串的逻辑表达式,使用eval()?:使用“新布尔()”,以评估的逻辑表达式

var test = '(1 < 2 || 2 < 1) && 1 < 0)' 
+1

的是,'新Boolean'部分是完全多余的,而事实上,积极适得其反。 '(1 <2 || 2 < 1) && 1 > 0'已经是你所需要的。 – user2357112

+1

的积极适得其反的方面是,它创建了一个布尔包装对象,而不是真正的布尔值,如果你尝试使用它在包装物被认为是真实的一个'if'或以其他方式将它视为一个布尔值,即使这个包装器是一个包装器'false'。 – user2357112

+0

好吧,有没有什么方法可以实现我所需要的,或者这种评估能力是否为console.log的一个特性()? – bitsmcgee77

回答

3

var test = '((1 < 2 || 2 < 1) && 1 < 0)'; 
 
console.log(new Boolean(new Function(`return ${test}`)()));

+2

你也可以在最后加一个'.valueOf()'来获得原始值 – nem035

+0

感谢你。问题:这和eval()一样危险吗? – bitsmcgee77

+0

_“问题:和eval()一样危险吗?”_不确定你的意思;上下文是什么? – guest271314