switch ステートメントは if ステートメントと最も密接に関連しており、他のプログラミング言語でもよく使用されるフロー制御ステートメントですが、この詳細に注意しないと、switch ステートメントは合同モードになります。プログラムを書くときによくエラーを起こします。
コード:
var n = '5'; switch(n){ case 5: alert('执行case分支'); break; default: alert('执行default分支'); }
結果:
多くの人は、上記のプログラムが case ブランチを選択すると誤解しているかもしれませんが、最終的にはデフォルトのブランチを選択します。二人は同等ではないですか? if文を使って見てみましょう。
コード:
var n = '5'; if(n==5){ alert('真 分支'); }else{ alert('假 分支'); }
結果:
if ステートメントでは一致するのに、switch ステートメントでは一致しないのはなぜですか?
これは、switch ステートメントの case で合同モードが使用されているためです。これは、if で 3 つの等号を使用するのと同じです。ケースコードを書き換えてみましょう
コード:
var n = '5'; switch(n){ case '5': // 把原来的 case 5 改写成 case '5' alert('执行case分支'); break; default: alert('执行default分支'); }
結果:
書き換えた後は、
の場合に 3 つの合同符号を使用するのと同じように、ケース分岐を取ることができます。コード:
var n = '5'; if(n===5){ alert('真 分支'); }else{ alert('假 分支'); }
結果:
合同が使用されているため、文字列 5 は数値 5 と等しくなく、結果は偽分岐になります。
上記の例は、switch で合同マッチング モードが使用されていることを示しています。特に、数値と文字列をマッチングするときに注意する必要がある問題です