問題:
大なりを伴う switch ステートメントの使用また、小なり演算子は JavaScript 構文では使用できません。これは、範囲比較を効率的に実行する必要がある場合に課題となります。
解決策:
この問題に対処するにはさまざまなアプローチがありますが、最も効率的な解決策は、特定の使用例とブラウザ環境。以下にいくつかのテスト済みオプションを示します。
if-immediate (即時条件文):
<code class="javascript">if (scrollLeft < 1000) { // do stuff } else if (scrollLeft > 1000 && scrollLeft < 2000) { // do other stuff }
このメソッドは、ネストされた if 文を直接比較に使用するため、優れたパフォーマンスが得られます。 .
switch-immediate (即時 Switch-Case ステートメント):
<code class="javascript">switch (true) { case scrollLeft < 1000: // do stuff break; case scrollLeft > 1000 && scrollLeft < 2000: // do other stuff break; }
switch ステートメントに似ていますが、内部的に if ステートメントを使用するため、switch ステートメントと同等になります。 if-immediate アプローチ。
switch-range (Switch-Case ステートメントの範囲マッチング):
<code class="javascript">switch (true) { case scrollLeft >= 0 && scrollLeft < 1000: // not recommended case scrollLeft >= 1000 && scrollLeft < 2000: // do stuff break; }
このアプローチは、switch-immediate メソッドを拡張して処理します。範囲の比較。ただし、潜在的なオーバーフローやパフォーマンスの低下により、パフォーマンスに影響が出る可能性があります。
switch-range2 (変数を使用した範囲マッチング):
<code class="javascript">const range1 = [0, 1000]; const range2 = [1000, 2000]; switch (true) { case scrollLeft >= range1[0] && scrollLeft < range1[1]: case scrollLeft >= range2[0] && scrollLeft < range2[1]: // do stuff break; }</code>
このメソッドは、比較を実行する範囲の配列。パフォーマンスと柔軟性のバランスが取れています。
ベンチマーク結果:
ブラウザのパフォーマンス比較:
推奨事項:
パフォーマンスを最大化するには、 if-immediate を使用します。パフォーマンスが重要な問題ではない場合は、switch-immediate または switch-range2 を switch ステートメントの利便性を提供する代替オプションとして使用できます。パフォーマンスが低下するため、switch-indirect-array または array-binary-switch の使用は避けてください。
以上がJavaScript で大なり/小なり比較に Switch ステートメントを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。