ループと同様に、条件文も実行フローを変更します
JavaScriptには2種類の条件文があります
if-else
switch
if-elseは最も一般的に使用されるものです
しかし、if-else ステートメントと switch ステートメントは多くの場合相互に置き換えることができます
たとえば、次のコードは同等です
if(foo){ ...}else{ ...}
switch(foo){ case true: ... default: ...}
条件が少ない場合、人々は if を使用する傾向があります-else
ただし、条件が多い場合は switch を使用するとわかりやすいです
if(foo === 1){ ...}else if(foo === 2){ ...}else if(foo === 3){ ...}else if(foo === 4){ ...}else{ ...}
ただし、2 つの条件文のどちらを使用する方がパフォーマンスが優れています
条件の数が非常に多い場合は、switch 文の方がより高速に実行されます。明らかに
正確に言うと、条件が増えると、if-else パフォーマンスの負担はさらに増加します
(ほとんどの言語の switch ステートメントは、最適化のためにブランチ テーブル ブランチ テーブル インデックスを使用します)
そして JavaScript では、switch ステートメントは次のことを行います。強制的な型変換はありません
つまり、合同演算子を使用して比較します
このように、型変換のロスはありません
そこで、条件の数が少ない場合はif-elseを使用し、条件が少ない場合は切り替えます条件の数が多い
パフォーマンスの観点から合理的です
(if-elseは2つの離散値または複数の異なる値範囲を判断するのに適しており、switchは複数の離散値を判断するのに適しています)
ifを使用する場合else ステートメントは、確率が大きいものから小さいものへの順序で並べる必要があります
これは理解するのは簡単ですが、簡単に無視されます
さらに、少しの最適化は、if-else を一連のネストされた if-else に整理することです。ステートメント
これは数学的な二分法に似ており、範囲と実行時間を短縮できます
このように
switch(foo){ case 1: ... case 2: ... case 3: ... case 4: ... default: ...}
これに変更してください
if(foo >= 1 && foo < 3){ //...}else if(foo >= 3 && foo < 5){ //...}else if(foo >= 5 && foo < 7){ //...}else{ //...}
わかりました効率を向上させます
一部の特殊なケースでは、「ルックアップテーブル」メソッド条件が多い場合は超高性能です
if(foo >= 1 && foo < 5){ if(foo < 3){ //... }else{ //... } }else{ if(foo < 7){ //... }else{ //... } }
上記の関数を次のように再構築します
function fn(a){ switch(a){ case 0: return 0; case 1: return 1; case 2: return 2; case 3: return 3; case 4: return 4; case 5: return 5; case 6: return 6; case 7: return 7; } }
これは単純なだけでなく、可読性が高く、パフォーマンスも向上します
条件の数が増えると、ルックアップテーブルがより高速になります。追加のパフォーマンスのオーバーヘッドはほとんど発生しません
しかし、単一のキーと単一の値の間に論理マッピングがある状況にはより適しています
条件文とよく似た三項演算子
もあります。 :
if-elseと同等です
戻り値を重視する場合には三項演算子の方が適しています
どういう意味ですか? 以下のコードを見てください
function fn(a){ var retArr = [0,1,2,3,4,5,6,7]; return retArr[a]; }
このように書き換えた方が良いです
var foo;;if(flag){ foo = 1; }else{ foo = 2; }
焦点は、 の戻り値にありますflag ? 1 : 2
foo 変数に値を直接代入する
この状況は、三項演算子の使用に非常に適しています
上記は、JavaScript の条件文のパフォーマンスの問題です
非常に多くの条件があります
そして、最新のブラウザーの JS エンジンは特に強力です (たとえば、V8 エンジン []~( ̄▽ ̄)~*)
でも、理解しておいて損はありません...
上記はJavaScript 条件文のパフォーマンスの問題の内容 さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。