我是Java语言switch
语句的新手。有趣的是,如果所有if都失败,它将多个if语句与默认结果结合在一起。
我是一个好奇的人,想知道如果所有其他失败的“默认”值可以通过使用带有变量的select属性来实现。
示例:
const action.type = "non-existing-property";
const runF = {
CREATE_PROJECT_SUCCESS: () => {
console.log("created project");
return state;
},
CREATE_PROJECT_ERROR: () => {
console.log("create project error");
return state;
},
default: ()=>{
console.log("Do default stuff if all else failed");
return state;
}
}[action.type];
runF();
通常,action.type值将为CREATE_PROJECT_SUCCESS或CREATE_PROJECT_ERROR。但是,如果该财产不存在会怎样?然后,我想运行默认属性。
任何人都知道如何做到这一点?
更新:
我找到了一个可能的解决方案,但这需要另一个if语句。我希望看到一个更小,更快速的解决方案。 const action.type =“不存在的属性”;
let runF = {
CREATE_PROJECT_SUCCESS: () => {
console.log("created project");
return state;
},
CREATE_PROJECT_ERROR: () => {
console.log("create project error");
return state;
}
}[action.type];
if (!runF) {
//runF not defined/valid -> run default function
runF = () => {
console.log("Do default stuff if all else failed");
return state;
};
}
runF();
答案 0 :(得分:1)
您可以在属性访问器中使用逻辑OR运算符(||
)来实现对默认属性名称的回退。像这样:
const runF = {
CREATE_PROJECT_SUCCESS: () => {
console.log("created project");
return state;
},
CREATE_PROJECT_ERROR: () => {
console.log("create project error");
return state;
},
default: ()=>{
console.log("Do default stuff if all else failed");
return state;
}
}[action.type || 'default'];
runF();