ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのスイッチ判定で間違いやすい細部_基礎知識

JavaScriptのスイッチ判定で間違いやすい細部_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:38:291345ブラウズ

switch ステートメントは if ステートメントと最も密接に関連しており、他のプログラミング言語でもよく使用されるフロー制御ステートメントですが、この詳細に注意しないと、switch ステートメントは合同モードになります。プログラムを書くときによくエラーを起こします。

コード:

var n = '5';
switch(n){
    case 5:
        alert('执行case分支');
        break;
    default:
        alert('执行default分支');
}

結果:

JavaScriptのスイッチ判定で間違いやすい細部_基礎知識

多くの人は、上記のプログラムが case ブランチを選択すると誤解しているかもしれませんが、最終的にはデフォルトのブランチを選択します。二人は同等ではないですか? if文を使って見てみましょう。

コード:

var n = '5';
if(n==5){
    alert('真 分支');
}else{
    alert('假 分支');
}

結果:

JavaScriptのスイッチ判定で間違いやすい細部_基礎知識

if ステートメントでは一致するのに、switch ステートメントでは一致しないのはなぜですか?

これは、switch ステートメントの case で合同モードが使用されているためです。これは、if で 3 つの等号を使用するのと同じです。ケースコードを書き換えてみましょう

コード:

var n = '5';
switch(n){
    case '5': // 把原来的 case 5 改写成 case '5'
        alert('执行case分支');
        break;
    default:
        alert('执行default分支');
}

結果:

JavaScriptのスイッチ判定で間違いやすい細部_基礎知識

書き換えた後は、

の場合に 3 つの合同符号を使用するのと同じように、ケース分岐を取ることができます。

コード:

var n = '5';
if(n===5){
    alert('真 分支');
}else{
    alert('假 分支');
}

結果:

JavaScriptのスイッチ判定で間違いやすい細部_基礎知識

合同が使用されているため、文字列 5 は数値 5 と等しくなく、結果は偽分岐になります。

上記の例は、switch で合同マッチング モードが使用されていることを示しています。特に、数値と文字列をマッチングするときに注意する必要がある問題です

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。