switch改用object table lookup
2017-04-16前端筆記
看了網路上這兩篇:
- Replacing switch statements with Object literals
- Consider lookup tables instead of switch or if/else
基本上就是建議把 if else
/switch
改用一個 object 寫成 table 表,直接用對 key 的方式查找。號稱在判斷條件越多時有更好的效能,且有易擴充、易讀與易維護的特性,相較之下 switch
是有點舊且破碎的寫法,隱憂是包了幾層巢狀就埋了多少個break,日後debug時看flow簡直作死?
簡單的範例:
1 | function device(type) { |
改寫後:
1 | var device={ |
p.s.附上各家瀏覽器對各種寫法的跑分測試網頁,Chrome在55版之後已無太大差別, Firefox 的 table lookup 居然慢了其他半截!? Safari 中 switch 則有明顯落差。不過最慢也有每秒2千萬次執行的數量級,人類應該很難察覺吧。