使用命令對象代替switch語句的寫法示例
曾經(jīng)有人說過,真正好的程序是沒有if..else的,當然switch還不如if..else。JS規(guī)范里面是禁止使用switch的。
命令對象(command object)就完美的解決了這個問題。
引用一篇國外的博客提到的:
JavaScript 有著良好的控制流程語句,這些語句往往用花括號包裹著。不過有個例外:switch … case 語句。switch … case 的奇怪之處在于你必須在每個 case 末尾加上關鍵字 break,以防止流程控制權穿越進入下一個 case 語句中。穿越是指讓多條 case 執(zhí)行的手法,當未遇見預期的 break 時,控制權就自動交到下一句 case 手中。然而,就如同分號與花括號一樣,你很有可能會在不經(jīng)意之間忘了寫 break,當這發(fā)生時,后期的錯誤排查就比較痛苦,因為語句本身是沒錯的。因此,配對地寫 case … break 是個好習慣。
我們通常講,JavaScript 有著優(yōu)雅的對象字面量與頂級函數(shù),這些都使得特定的方法查詢變的非常簡單。為方法查詢所創(chuàng)建的對象,我們稱之為 活動對象(action object) 或 命令對象(command object),它被運用在許多軟件設計模式中,包括強大的而有用的命令模式。
實例:
// switch 方法
function testSwitch(name) {
switch (name) {
case '1':
return 'hack';
break;
case '2':
return 'slash';
break;
case '3':
return 'run';
break;
default:
return false;
break;
}
}
// 使用命令對象
function testFn(name) {
var names = {
'1': function() {
return 'hack';
},
'2': function() {
return 'slash';
},
'3': function() {
return 'run';
}
};
if (typeof names[name] !== 'function') {
return false;
}
return names[name]();
}
// 測試結(jié)果
var result1 = testSwitch('1');
var result2 = testFn('2');
console.info(result1, result2);
相關文章
JS實現(xiàn)瀏覽器點擊下載圖片功能案例分析【親測有效】
這篇文章主要介紹了JS實現(xiàn)瀏覽器點擊下載圖片功能,對比分析了同源與不同源兩種解決方案,并以實際案例形式分析了不同源情況下針對文件點擊下載的具體實現(xiàn)技巧與相關注意事項,需要的朋友可以參考下2023-04-04
BootStrap.css 在手機端滑動時右側(cè)出現(xiàn)空白的原因及解決辦法
這篇文章主要介紹了BootStrap.css 在手機端滑動時右側(cè)出現(xiàn)空白的原因及解決辦法的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-06-06

