2010-11-27 10 views
6

私はこの独特のプラクティスをブラウザ検出スクリプトで発見しました。Else Ifの代わりにIf/Elseを入れ子にする利点はありますか?

if (/MSIE/.test(_3)) { 
    IE = true; 
} else { 
    if (/AppleWebKit/.test(_3)) { 
     Safari = true; 
    } else { 
     if (/Opera/.test(_3)) { 
      Opera = true; 
     } else { 
      if (/Camino/.test(_3)) { 
       Camino = true; 
      } else { 
       if (/Firefox/.test(_3) || /Netscape/.test(_3) ||) { 
        Mozilla = true; 
       } 
      } 
     } 
    } 
} 

このネストされたIF /エルスメソッドを使用するすべての利点がありますか?

if(){ 
} else if(){ 
} else if(){ 
} else if(){ 
} 

それが遅くか何かを実行します:私はちょうどそれを変更した場合にどのような

答えて

4

この場合、switchステートメントを使用することもできますか?ような何か:()は、とにかく

{()...場合}他に、あなたはルックスを発見し、提示したコードと同等のが、より読みやすい場合、他:

switch ((_3).match(/msie|applewebkit|opera|camino|firefox/i)[0]) { 
    case 'MSIE' : /* ...; */ break; 
    case 'AppleWebKit' : /* ...; */ break; 
    /* ... etc. */ 
    default: BrowserCouldntBeDetermined = true; 
} 

私は前の回答に準拠少し不器用で、方法はif...elseよりも他の理由では本当に速くはありません。コードの意味(とは別に質問)に関しては、ブラウザの違いを気にする良い方法はobject detectionです。

11

インデントや可読性以外の変更はありません。それでも、同じコード、絶対的に同等です:-)私は間違いなくそれを変更するだろうが、それはより読みやすくなります。インデントは通常ネストを意味しますが、ここではネストはありません。

関連する問題