【发布时间】:2018-11-13 09:36:44
【问题描述】:
我是 JavaScript 中 switch 语句的新手。很酷的一点是,它结合了多个 if 语句和一个默认结果,如果所有 if 都失败了。
我是一个好奇的人,想知道如果所有其他方法都失败了,如何使用带有变量的对象属性选择来实现这个“默认”。
例子:
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();
【问题讨论】:
-
你在 Redux 中使用这个语句吗?在这种情况下,请使用 switch 语句而不是此代码。
-
是的,它与 redux 一起使用。我和我的老师讨论了 switch redux,他说 switch 语句可能是不好的做法。但这不在这个问题范围内,我只是想看看使用对象而不是开关的有效替代方案。
标签: javascript object properties switch-statement key