if文をjavascriptを使ってswitch文に変換しようとしています。これはif文の動作です。Javascript - if文をswitch文に変更する
if(!error1(num, a_id) && !error2(num, b_id) && !error3(num, c_id) && !error4(num, d_id)) {
a.innerHTML = num;
これをswitch文に入れる方法についてのヒントは素晴らしいと思います。ありがとう
if文をjavascriptを使ってswitch文に変換しようとしています。これはif文の動作です。Javascript - if文をswitch文に変更する
if(!error1(num, a_id) && !error2(num, b_id) && !error3(num, c_id) && !error4(num, d_id)) {
a.innerHTML = num;
これをswitch文に入れる方法についてのヒントは素晴らしいと思います。ありがとう
あなたはです。これをswitch
にしますが、なぜあなたが望むのかは不明です。一見すると、これはあなたがswitch
を使用するような状況(一連の値の中から選択し、それぞれに異なる何かをすること)ではありません。これはJavaScriptではなく、switch
を持っている他のほとんどの言語で動作します
switch (false) {
case !error1(num, a_id):
case !error2(num, b_id):
case !error3(num, c_id):
case !error4(num, d_id):
// Do nothing
break;
default:
a.innerHTML = num;
break;
}
:ここ
はどのように、私はそれをお勧めしませんがあります。その理由は、case
ラベルが実行ポイントに達すると評価され、ラベルがguaranteed to be evaluated in source code orderであるためです。したがって、値false
に切り替えています。これは、最初に!error1(num, a_id)
の戻り値に対して(完全一致を使用して、===
を使用して)テストされ、一致しない場合は、!error2(num, a_id)
などと比較されます。一致するものがなければ、すべてがtrue
と評価され、ブロックdefault
のコードが実行されます。
私は決して_clarify_ではなく、スイッチの_obfuscate_と 'if'を見ることは考えられませんでした。 –
@マイケル:うん。 :-) –
これは元のコードと同じことをしません。これはエラー関数のうちのどれかが 'false'を返すならば成功しますが、エラー関数の_all_が' false'を返すなら、元のコードは成功します。 1つの修正は、 'case'条件を' error1(num、a_id) 'などに変更し、成功したコードを' default'ブロックに移動することです(この[jsFiddle](http://jsfiddle.net/ FumKn/1 /))。 –
これは通常、 'switch'への変換の候補である' if/else if/else'チェーンです。これは単一(コンパウンドであるにもかかわらず) 'if'条件です。スイッチに変換する必要はありません。 –
'error1'、' error2'などのコードを見ずには不可能 –
なぜあなたはそれをしたいですか? 'if(x == a || x == b || x == c)'ならば、 'switch(x){case a:... case b:... case c: ... default:...} 'となりますが、ここには' || 'ではなく' && 'があります。 – Manish