2017-03-17 101 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