[英]Access object property with variable and fallback to default property if non-existing
我是 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();
您可以在屬性訪問器中使用邏輯 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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.