今天在写代码的时候,遇到了一个小需求
传入年龄,有一张年龄段的映射表,映射成具体的汉字表示,比如
23岁代表青年.
这个需求很简单,一开始我是这样写的
const ageMap = function (age) {switch (age) {case (age > 0 && age <= 3):return 0;case (age > 3 && age <= 18):return 1;case (age > 18 && age <= 30):return 2;case (age > 30 && age <= 60):return 3;case (age > 60 && age <= 200):return 4;default:return '';}};
乍一看是没有问题的,但是实际操作直接跳到了 default 返回空字符串,原因就在于 switch case 里的 case 只能使用具体的值,比如 case 1: case: 'aaa': 等等,不能使用表达式!
所以只能用 if else if了
const ageMap = function (age) {if (age > 0 && age <= 3) {return 0;} else if (age > 3 && age <= 18) {return 1;} else if (age > 18 && age <= 30) {return 2;} else if (age > 30 && age <= 60) {return 3;} else if (age > 60 && age <= 200) {return 4;}return '';};
后续如果找到更加优雅的写法,会进行更新 :-)
