將判斷及處理定義為一個策略對象,key為判斷條件,值為函數,可帶參。
var strategy = {
'a':function(count){
return count*1;
},
'b':function(count){
return count*2;
},
'c':function(count){
return count*3;
}
}
//定義一個函數接收判斷條件及參數
var calculate = function(level,count){
return strategy[level](count);//找到對應條件的函數並執行
}
console.log(calculate('a',1));//1
console.log(calculate('b',1));//2
這樣寫的好處是,代碼中減少了大量if/else語句;可擴展性好;
寫if/else語句會基於判斷一個一個對比,倘若判斷多,且匹配條件剛好又處於靠后位置,勢必會影響效率。
至於采用對象查找key值,有人試驗查找一個具有300000個字符串的鍵值對,查找速率小於1ms。