javascript開發經驗總結【一】:多重條件判斷


javascript是一門精巧的語言,可大可小,可伸可縮,如意金箍棒一般,運用恰當,可敵千夫。比如一個場景,有的人要寫上百行代碼,但是有的人寥寥幾筆即可實現,思路就在彈指間。要想學好一門語言,就要掌握其要義,歸納其精髓,方可如魚得水,運籌帷幄。

 

js在開發大型組件庫的時候經常會碰到很多的邏輯分支情況。比如博客園的編輯框編寫:

if(target === "font"){
  someFunction(){...}
}
else if(target === "code"){
  someFunction(){...}  
}
else if(target === "table"){
  someFunction(){...}
}
else if(target === "images"){
  someFunction(){...}
}
else if(target === "link"){
  someFunction(){...}  
}
else if(target === "file"){
  someFunction(){...}  
}

 

為了邏輯清晰當然也可以這樣寫:

switch(target){
    case : "font" :
           someFunction(){...} 
    break; 
    case : "code" :
           someFunction(){...} 
    break;
    case : "table" :
           someFunction(){...} 
    break; 
    case : "images" :
           someFunction(){...} 
    break; 
    case : "link" :
           someFunction(){...} 
    break;
  case : "file" :
           someFunction(){...} 
    break;
}

當然這樣的一層邏輯很容易書寫和維護,但是,如果碰到下面還有多重分支的情況改如何處理呢,大部分人都是繼續if else或者switch case。於是代碼就變的越來越長,越來越難維護。就像下面的代碼一樣:

switch(target){
    case : "font" :
           someFunction(){...} 
    break; 
    case : "code" :
          switch(code){
                 case : "java" :
                       someFunction(){...} 
                 break;
                 case : "c" :
                       someFunction(){...} 
                 break;
                 case : "c++" :
                       someFunction(){...} 
                 break;
          }
         
    break;
    case : "table" :
           someFunction(){...} 
    break; 
    case : "images" :
           someFunction(){...} 
    break; 
    case : "link" :
           someFunction(){...} 
    break;
  case : "file" :
           someFunction(){...} 
    break;
}    

 

js是一門面向對象的語言,我們能不能用面向對象的思想來解決這個問題呢?請看下面的源碼:

 

editor = {
     "font" : function(){...}
     "code" : function(){...}
     "table" : function(){...}
     "images" : function(){...}
     "file" : function(){...}
}

editor[target]();    

 

這樣是不是清晰明了了很多?而且效率也肯定提升了,因為是對象直接尋址。

大致思路如下:

先創建一個對象,把所有的判斷分支都放到這個對象里,然后再調用。

 

那么是么時候需要用這個方法,什么時候不需要用呢?

先說需要用的:

一、在判斷分支很多的情況下建議使用。條理清晰。

二、在分支里的邏輯很復雜的情況下,可以起到邏輯拆分的作用。

 

再說不需要用的情況:

一、簡單的邏輯判斷。

二、分支比較少的情況。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM