在网上看到了 if else if 多条语句判断的优雅写法,如下所示:
var processMsg = function (type) {
if("Next" === type){
processMedia("next");
}else if("Previous" === type){
processMedia("previous");
}else if("Stop" === type){
processMedia("stop");
}else if("Pause" === type){
processMedia("pause");
}else if("Play" === type){
processMedia("play");
}else{
console.log("the type is not supported: " + type);
}
};
用switch case看上去比较整洁,另外如果不同的type 可能处理的函数是一样的。
var processMsg = function (type) {
switch (type){
case "Next":
processMedia("next");
break;
case "Previous":
processMedia("previous");
break;
case "Stop":
processMedia("stop");
break;
case "Pause":
processMedia("pause");
break;
case "Play":
processMedia("play");
break;
default:
console.log("the type is not supported: " + type);
break
}
};
这种就看上去好多了。
var processMsg = function (type) {
var actions = {
"Next" : "next",
"Previous" : "previous",
"Stop" : "stop",
"Pause" : "pause",
"Play" : "play"
};
var action = actions[type];
!!action ? processMedia(action) : console.log("the type is not supported: " + type);
};
但还有一种情况是这样的:
var processMsg = function (type) {
if("Next" === type){
processNext();
}else if("Previous" === type){
processPrevious();
}else if("Stop" === type){
processStop();
}else if("Pause" === type){
processPause();
}else if("Play" === type){
processPlay();
}else{
console.log("the type is not supported: " + type);
}
};
那么eval函数就派上用场了:
var processMsg = function (type) {
var actions = {
"Next" : "Next",
"Previous" : "Previous",
"Stop" : "Stop",
"Pause" : "Pause",
"Play" : "Play"
};
var action = actions[type];
!!action ? eval("process" + action + "()") : console.log("the type is not supported: " + type);
};
昨天测试妹子提了问题,整个模块功能不能用了。。。。 对eval加上try catch 发现 cobalt浏览器不支持eval 。。。