使用命令對(duì)象代替switch語句的寫法示例
曾經(jīng)有人說過,真正好的程序是沒有if..else的,當(dāng)然switch還不如if..else。JS規(guī)范里面是禁止使用switch的。
命令對(duì)象(command object)就完美的解決了這個(gè)問題。
引用一篇國外的博客提到的:
JavaScript 有著良好的控制流程語句,這些語句往往用花括號(hào)包裹著。不過有個(gè)例外:switch … case 語句。switch … case 的奇怪之處在于你必須在每個(gè) case 末尾加上關(guān)鍵字 break,以防止流程控制權(quán)穿越進(jìn)入下一個(gè) case 語句中。穿越是指讓多條 case 執(zhí)行的手法,當(dāng)未遇見預(yù)期的 break 時(shí),控制權(quán)就自動(dòng)交到下一句 case 手中。然而,就如同分號(hào)與花括號(hào)一樣,你很有可能會(huì)在不經(jīng)意之間忘了寫 break,當(dāng)這發(fā)生時(shí),后期的錯(cuò)誤排查就比較痛苦,因?yàn)檎Z句本身是沒錯(cuò)的。因此,配對(duì)地寫 case … break 是個(gè)好習(xí)慣。
我們通常講,JavaScript 有著優(yōu)雅的對(duì)象字面量與頂級(jí)函數(shù),這些都使得特定的方法查詢變的非常簡(jiǎn)單。為方法查詢所創(chuàng)建的對(duì)象,我們稱之為 活動(dòng)對(duì)象(action object) 或 命令對(duì)象(command object),它被運(yùn)用在許多軟件設(shè)計(jì)模式中,包括強(qiáng)大的而有用的命令模式。
實(shí)例:
// 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;
}
}
// 使用命令對(duì)象
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]();
}
// 測(cè)試結(jié)果
var result1 = testSwitch('1');
var result2 = testFn('2');
console.info(result1, result2);
相關(guān)文章
JS實(shí)現(xiàn)瀏覽器點(diǎn)擊下載圖片功能案例分析【親測(cè)有效】
這篇文章主要介紹了JS實(shí)現(xiàn)瀏覽器點(diǎn)擊下載圖片功能,對(duì)比分析了同源與不同源兩種解決方案,并以實(shí)際案例形式分析了不同源情況下針對(duì)文件點(diǎn)擊下載的具體實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2023-04-04
JavaScript使用cookie記錄臨時(shí)訪客信息的方法
這篇文章主要介紹了JavaScript使用cookie記錄臨時(shí)訪客信息的方法,涉及javascript操作cookie的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
探索JavaScript中私有成員的相關(guān)知識(shí)
這篇文章主要介紹了探索JavaScript中私有成員的相關(guān)知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
js手動(dòng)播放圖片實(shí)現(xiàn)圖片輪播效果
這篇文章主要為大家詳細(xì)介紹了js手動(dòng)播放圖片實(shí)現(xiàn)圖片輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
js實(shí)現(xiàn)點(diǎn)擊圖片將圖片地址復(fù)制到粘貼板的方法
這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)擊圖片將圖片地址復(fù)制到粘貼板的方法,涉及js操作節(jié)點(diǎn)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02
BootStrap.css 在手機(jī)端滑動(dòng)時(shí)右側(cè)出現(xiàn)空白的原因及解決辦法
這篇文章主要介紹了BootStrap.css 在手機(jī)端滑動(dòng)時(shí)右側(cè)出現(xiàn)空白的原因及解決辦法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
javascript間隔刷新的簡(jiǎn)單實(shí)例
這篇文章介紹了javascript間隔刷新的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-11-11

