有一个多重判断语句 逻辑上是判断type=不同的数字 执行不同的方法 type的取值范围从1~9 有部分type值没有对应的处理函数
比如:
if(type==1){
//do something
}
if(type==3){
//do something
}
if(type==5){
//do something
}
后来觉得很多冗余 换了一种方法:
var goto={
"1":function(){
//do something
},
"3":function(){
//do something
},
"5":function(){
//do something
}
};
goto[type];
但是又遇到一个问题,type值遇上没有列出在goto的时候会遇到undefined错误,可是如果这样写:
var goto={
"1":function(){
//do something
},
"3":function(){
//do something
},
"5":function(){
//do something
}
“2”:function(){},
“4”:function(){},
“6”:function(){},
“8”:function(){}
};
goto[type];
又觉得这样的代码量分分钟比第一种还要多 请问有没有其他思路呢 谢谢
高洛峰2017-04-10 14:24:56
这是javascript?直接用switch?如
function func(i){
switch(i){
case "1":
console.log("1...");
break;
case "2":
console.log("2...");
break;
case 2:
console.log("2...num");
break;
default:
console.log("...");
}
}
PHP中文网2017-04-10 14:24:56
function getFunByVal(val){
return {"1":doSomething,"1":doSomething,"3":doSomething,"4":doSomething,"5":doSomething,"6":doSomething,"7":doSomething,"8":doSomething,"9":doSomething}[val];
}
黄舟2017-04-10 14:24:56
你的第2种和第3种是一样的形式了...
var gofunc = function(type) {
var maps = {
1: function() {
console.log('1');
},
2: function() {
console.log('2');
},
};
return (maps.hasOwnProperty(type) ? maps[type]() : null);
}