如何測試數學表達式是否爲真?在JavaScript中測試方程
var equation = "1 + 1 = 2";
if (equation === true){
document.write("1 + 1 = 2");
}else{
document.write("1 + 1 =/= 2");
}
出於顯而易見的原因,該代碼^^^不工作,但我只是想知道,如果有,會做這樣的功能;評估數學表達式然後將其真實性作爲布爾值(真/假)返回。
如何測試數學表達式是否爲真?在JavaScript中測試方程
var equation = "1 + 1 = 2";
if (equation === true){
document.write("1 + 1 = 2");
}else{
document.write("1 + 1 =/= 2");
}
出於顯而易見的原因,該代碼^^^不工作,但我只是想知道,如果有,會做這樣的功能;評估數學表達式然後將其真實性作爲布爾值(真/假)返回。
一種方法是使用eval
;但請注意,它需要JavaScript的符號,而不是一個臨時的符號:
var equation = "1 + 1 == 2"; // note: `==`, not `=`
if (eval(equation)){
document.write("1 + 1 = 2");
}else{
document.write("1 + 1 =/= 2");
}
這種方法具有不很「安全」的缺點,因爲eval
「d字符串可以任何包含任何JavaScript代碼。這極大地限制了使用它的一系列情況。
+1提到安全問題。向用戶輸入數據時,'eval()'可能會很危險。 –
我會寫簡單地檢查,如果兩個值加起來如預期的方法:
function addsUp(a, b, x) {
return a + b === x;
}
if (addsUp(1, 1, 2)){
document.write("1 + 1 = 2");
}else{
document.write("1 + 1 =/= 2");
}
var equation = eval("1+1==2");
-0.25爲w3schools。說真的,那裏的誤導性網站少得多。例如,[MDN](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/eval)。 – cHao
你必須評估你的表達:
eval("1+1==2")
怎麼樣
var equation = "1 + 1 = 2";
equation = equation.replace('=','==');
if (eval(equation)){
document.write("1 + 1 = 2");
}else{
document.write("1 + 1 =/= 2");
}
?
你應該看看這個線程:Equation (expression) parser with precedence?
但考慮到自己在做什麼是相當複雜的,除非你可以把它分解成一些規則。
如果它始終採用X (+-/*) Y = Z
的格式,那麼您可以使用正則表達式或一堆目標字符串替換去除信息。如果它需要處理A + B - C = D + Z
(等式兩邊的變量數),那麼您需要查看遞歸和/或複雜的字符串解析。
如果你使用userinputs你可能要加引號的兩倍......否則你在分配得到一個錯誤無效的左側
var equation = "1 + 1 == 2";
if (eval(equation)){
document.write("1 + 1 = 2");
}else{
alert('s');
document.write("1 + 1 =/= 2");
}
我建議'的eval()',但你也想需要將'='改爲'=='才能正常工作。 – canon
你可以評估它*(但如上所述的'=')*,但實際情況如何?這感覺就像一個XY問題。否則,您可以手動解析字符串。 –
@我討厭懶惰:我實際上正在研究一種方程求解器,這樣我就可以得到for和while循環的竅門。我只是想知道是否存在這樣的功能來測試我之前所說的平等。 – user1892304