曾經有人說過,真正好的程式是沒有if..else的,當然switch還不如if..else。 JS規範裡面是禁止使用switch的。
命令物件(command object)就完美的解決了這個問題。
引用一篇國外的部落格提到的:
JavaScript 有著良好的控制流程語句,這些語句往往用花括號包裹著。不過有個例外:switch … case 語句。 switch … case 的奇怪之處在於你必須在每個 case 結尾加上關鍵字 break,以防止流程控制權穿越進入下一個 case 語句中。穿越是指讓多個 case 執行的手法,當未遇見預期的 break 時,控制權就會自動交給下一句 case 手中。然而,就如同分號與花括號一樣,你很有可能會在不經意之間忘了寫 break,當這發生時,後期的錯誤排查就比較痛苦,因為語句本身是沒錯的。因此,配對地寫 case … break 是個好習慣。
我們通常講,JavaScript 有著優雅的物件字面量與頂層函數,這些都使得特定的方法查詢變的非常簡單。為方法查詢所建立的對象,我們稱之為 活動對象(action object) 或 命令對象(command object),它被運用在許多軟體設計模式中,包括強大的而有用的命令模式。
實例: