使用命令对象代替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);

 

时间: 2024-10-30 03:52:46

使用命令对象代替switch语句的写法示例的相关文章

使用命令对象代替switch语句的写法示例_javascript技巧

曾经有人说过,真正好的程序是没有if..else的,当然switch还不如if..else.JS规范里面是禁止使用switch的. 命令对象(command object)就完美的解决了这个问题. 引用一篇国外的博客提到的: JavaScript 有着良好的控制流程语句,这些语句往往用花括号包裹着.不过有个例外:switch - case 语句.switch - case 的奇怪之处在于你必须在每个 case 末尾加上关键字 break,以防止流程控制权穿越进入下一个 case 语句中.穿越是指

java中如何理解switch语句参数的对象.what

问题描述 java中如何理解switch语句参数的对象.what java中如何理解switch语句参数的对象.what switch (msg.what) { ......} 解决方案 msg是一个对象,what是其中的一个成员变量,没有什么特别的.

关于sql server查询语句的写法。

问题描述 关于sql server查询语句的写法. 怎样写一个查询语句select distinct ID from TrainTime order by ID select Station from TrainTime where S_No='1'order by ID select Stationfrom TrainTime where D_Time='-' order by ID 怎样把这3个查询语句写为一句啊,让查询查来的结果为这3列数据. 因为我想建一个表,为3列,列名为:列车车次.起

PHP中的switch语句的用法实例详解_php实例

switch是一个开关语句,那么很多朋友都只知道简单的switch开关语句的用法了,下面一聚教程小编就为各位详细的介绍一下switch用法例子吧. 只所以称为"高级"用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实还是它的基础用法! switch 语句和具有同样表达式的一系列的 IF 语句相似.很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码.这正是 switch 语句的用途. 注意: 注意和其它语言不同,cont

Switch语句的技巧_Swift

概述 switch语句对一个表达式求值,将结果与 case 子语句比较,如果匹配,则从 case 处的语句向下执行. 语法 break;语句是可选择的,如果遇到break;则会跳出整个switch语句.如果没有任何case匹配,则进入到default:的分支.default:分支也是可选的. switch (expression) { case value1: // 当 expression 的结果与 value1 匹配时,从此处开始执行 statements1: [break;] case v

深入解析Swift中switch语句对case的数据类型匹配的支持_Swift

Swift可以对switch中不同数据类型的值作匹配判断: var things = Any[]() things.append(0) things.append(0.0) things.append(42) things.append(3.14159) things.append("hello") things.append((3.0, 5.0)) things.append(Movie(name:"Ghostbusters", director:"Iv

asp.net switch语句用法(C,C#)

asp教程.net switch语句用法(C,C#) switch 语句是一个控制语句,它通过将控制传递给其体内的一个 case 语句来处理多个选择和枚举 int caseSwitch = 1; switch (caseSwitch) {     case 1:         Console.WriteLine("Case 1");         break;     case 2:         Console.WriteLine("Case 2");   

switch 语句

语句   当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句. switch (expression) {   case label :       statementlist   case label :       statementlist   ...   default :       statementlist} 参数 expression 要求值的表达式. label 根据 expression 来匹配的标识符.如果 label === expression,则立即从冒号

Visual C#2005快速入门之switch语句

visual|快速入门|语句 某些时候,在嵌套使用if语句时,所有if语句看起来都非常相似,因为它们都在对一个完全相同的表达式进行求值,惟一的区别是每个if语句都将表达式的结果与一个不同的值进行比较.例如: if (day == 0) dayName = "Sunday";else if (day == 1) dayName = "Monday";else if (day == 2) dayName = "Tuesday";else if (da