switch..case使用

1、多个if...else连在一起使用的时候,可以转为使用更方便的switch结构。
switch (XXX) { case "aaa": // ... break; case "bbb": // ... break; default: // ... }
需要注意的是,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。

2、switch结构不利于代码重用,往往可以用对象形式重写
function getItemPricing(customer, item) {
  switch(customer.type) {
    case 'VIP':
      return item.price * item.quantity * 0.50;
    case 'Preferred':
      return item.price * item.quantity * 0.75;
    case 'Regular':
    case default:
      return item.price * item.quantity;
  }
}
上面代码根据不同用户,返回不同的价格。你可以发现,switch语句包含的三种情况,内部逻辑都是相同的,不同只是折扣率。这启发我们可以用对象属性,重写这个判断。
var pricing = {
  'VIP': 0.50,
  'Preferred': 0.75,
  'Regular': 1.0
};

function getItemPricing(customer, item) {
  if (pricing[customer.type])
    return item.price * item.quantity * pricing[customer.type];
  else
    return item.price * item.quantity * pricing.Regular;
}
如果价格档次再多一些,对象属性写法的简洁优势就更明显了。


PS:干前端一年,至今停留在简单的if..else和for循环。看到这个switch的基础讲解,觉得自己实在是太low了。这么久了,一点编程思想都没有养成呢。
参考网址:http://javascript.ruanyifeng.com/grammar/basic.html
 
posted @ 2016-08-03 10:43  明媚jm静好  阅读(292)  评论(0编辑  收藏  举报