萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> 使用命令對象代替switch語句的寫法示例

使用命令對象代替switch語句的寫法示例

  這篇文章主要介紹了使用命令對象代替switch語句的寫法示例,JS規范裡面是禁止使用switch語句的,使用命令對象可以完美的解決這個問題,需要的朋友可以參考下

  曾經有人說過,真正好的程序是沒有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),它被運用在許多軟件設計模式中,包括強大的而有用的命令模式。

  實例:

  代碼如下:

  // 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]();

  }

  // 測試結果

  var result1 = testSwitch('1');

  var result2 = testFn('2');

 

  console.info(result1, result2);

 
copyright © 萬盛學電腦網 all rights reserved