ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのifとswitch、==と===の違いと接続例を詳しく解説

JavaScriptのifとswitch、==と===の違いと接続例を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-18 14:46:151442ブラウズ

この記事では主に JavaScript の if と switch、== と === の違いと接続について説明します。非常に詳細で実践的です。

最初にサンプルコードを見てください:


var a = '5';
switch (a) {
  case 5:
    console.log('==');
    break;
  case "5":
    console.log('===');
    break;
  default:
}

コンソール表示は === なので安心して使えそうです。

1.if と switch

if は最も一般的に使用されるもので、言うことはあまりありません。注目すべき点の 1 つは、 if は実際には || に非常に似ているということです。 if (conditionA){} else {} のconditionA が true の場合、 else の前にコード ブロックを実行した後は、else のコードも参照しません。先頭で || が true の場合と同様に、たとえ多くのエラーがあっても、後で無視されます。もちろん、この性質に基づいて、最も使用される可能性のあるコードブロックを前に配置して、判定の数を減らします。一方、if 判定が多く、実行可能な回数が比較的均等に分散されている場合、後続の判定ステートメントは毎回前の判定を 1 つずつ実行する必要があり、最適化には役立ちません。より良いアプローチは、


if (a > 0 && a <= 1) {
  //do something
} else if (a > 1 && a <= 2) {

} else if (a > 2 && a <= 3) {

} else if (a > 3 && a <= 4) {

} else if (a > 4 && a <= 5) {

} else if (a > 5 && a <= 6) {

}...


if (a > 0 && a <= 4) {
  if (a <= 1) {
    //do something
  } else if (a > 1 && a <= 2) {

  } else if (a > 2 && a <= 3) {

  } else if (a > 3 && a <= 4) {

  }
} else if (a > 4 && a <= 8) {
  //
}..

になるように、1レベルの判断ステートメントを2レベルの判断ステートメントに変えることです。前の各判断はもう一度追加されますが、後続の判断は減らされます。 (4-1)*n 回行いましたが、それでもかなりのお金を稼ぎました。突然、この方法はネストされたループに少し似ているように感じます。ループを少数のループで外側に配置すると、特定の状況に応じて 2 つまたは複数のレイヤーに分割する方法が役立ちます。

スイッチはイフが圧倒されるたびに助けに来てくれる一番近い仲間です。 switch と if の間の相互変換についてはおそらく言うことはありません。switch は if と同様に上から下に順番に判断を実行します。違いは、if の else が switch では機能しないことです。壊す 。ブレークが発生しない場合、switch は


var a = 2;
switch (a) {
  case 1:
    console.log("1");
    //break miss
  case 2:
    console.log("2");
  case 3:
    console.log("3");
  default:
    console.log(&#39;no break&#39;);
}

のように実行を続けます。最終的に、コンソールには 2,3,no Break が表示されます。実際、break は内部の実行本体を抜け出して次のケースの判定に進むことを促すもので、if(condition){A}{B} と同等です。それ以外の場合は、もちろん A と B の両方が実行されます。他に小さなヒントが 2 つあります。1 つは、


switch (A + B) {
  case a * b:
    console.log("1");
    break;
  case a / b + c:
    break;
    //...
  default:
    console.log(&#39;no break&#39;);
}

のように、switch と case に任意の式を記述できることです。実際の比較は (A+B)===(a*b) と (A+B) です。 ) ===(a/b+c)。次に、switch には


switch (true) {
  case condition1:
    //do something
    break;
  case condition2:
    break;
    //...
  default:
    //..
    ;
}

などの特殊な使い方があります。このとき、switch 内の各ケースが順番に判断され、実行されます。 switch(false)はダメですか?

2.==と===

最も古典的なケース


var a = "5",
  b = 5;
a == b     //true
a === b     //false
var a = "ABC",
  b = "AB" + "C";
a === b     //true

以下がtrueを示す理由は、実はstring型の不変性と切り離せないものです。表面的には、b は文字列を連結しているだけのように見えますが、実際には元の b とは何の関係もありません。各文字列はメモリ プール内の特定の場所に格納されます。 b="AB"+"C" が実行されると、文字列 AB と C は破棄され、b はメモリ プール内の ABC の場所を指します。文字列 ABC は指す前にメモリ プール内に存在しているため (a が参照しているため存在します)、b は a と同じ領域を指しており、合同判定は等しいです。 b の前に文字列 ABC を指す変数がない場合、メモリ プール内に変数は存在せず、その中の ABC 用のスペースが割り当てられ、b は ABC を指すことになります。

以上がJavaScriptのifとswitch、==と===の違いと接続例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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