0

数式が正しいかどうかをテストするにはどうすればよいですか?

var equation = "1 + 1 = 2";
if (equation === true){
  document.write("1 + 1 = 2");
}else{
  document.write("1 + 1 =/= 2");
}

明らかな理由で、このコード^^^は機能しませんが、これを実行する関数があるかどうかを知りたかっただけです。数式を評価し、その真偽をブール値(true / false)として返します。

4

7 に答える 7

2

1 つのアプローチは、使用すること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 コードを含めることができるためです。これにより、それを使用する意味のある一連の状況が大幅に制限されます。

于 2012-12-10T19:48:30.507 に答える
1

2 つの値が期待どおりに加算されるかどうかを単純にチェックするメソッドを作成します。

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");
}
于 2012-12-10T19:47:36.963 に答える
1

このスレッドを見てください:優先順位のある方程式 (式) パーサー?

しかし、いくつかのルールに分解できない限り、あなたがしていることはかなり複雑であると考えてください。

常にの形式である場合は、X (+-/*) Y = Z正規表現または一連のターゲット文字列置換を使用して情報を取り除くことができます。それが対処する必要がある場合A + B - C = D + Z(方程式の両側の可変数の変数)、再帰および/または複雑な文字列解析を検討する必要があります。

于 2012-12-10T19:49:18.133 に答える
1
var equation = eval("1+1==2");  

詳細はこちら: http://www.w3schools.com/jsref/jsref_eval.ASP

于 2012-12-10T19:48:27.150 に答える
0

式を評価する必要があります。

eval("1+1==2")
于 2012-12-10T19:48:53.000 に答える
0

どうですか

var equation = "1 + 1 = 2";
equation = equation.replace('=','==');
if (eval(equation)){
  document.write("1 + 1 = 2");
}else{
  document.write("1 + 1 =/= 2");
}

?

于 2012-12-10T19:49:10.530 に答える
0

ユーザー入力を使用する場合、引用符を二重にする必要がある場合があります...そうしないと、代入の無効な左側のエラーが発生します

var equation = "1 + 1 == 2";

if (eval(equation)){
  document.write("1 + 1 = 2");
}else{
    alert('s');
  document.write("1 + 1 =/= 2");
}​
于 2012-12-10T19:50:08.017 に答える