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