【发布时间】:2020-05-26 09:49:09
【问题描述】:
我需要在 JavaScript 中创建一个变量并根据条件为其赋值。这可行,但感觉有点冗长:
const color = (() => {
switch (type) {
case "primary":
return CONSTANTS.colors.primary;
case "secondary":
return CONSTANTS.colors.secondary;
case "tertiary":
return CONSTANTS.colors.tertiary;
case "positive":
return CONSTANTS.colors.positive;
case "negative":
return CONSTANTS.colors.negative;
case "disabled":
return CONSTANTS.colors.disabled;
default:
throw new Error("A backgroundColor condition was missed");
}
})();
我正在尝试做的事情称为“模式匹配”吗?我读过 JavaScript 没有这个功能,但我不完全确定它是什么。
上面的代码有更简洁的写法吗?我可以有很多 if 声明,但这感觉更混乱,需要变量是 let 而不是 const。
let color:
if (type === "primary") {
color = CONSTANTS.colors.primary;
} else if(type === "secondary") {
color = CONSTANTS.colors.secondary;
} else if(type === "tertiary") {
color = CONSTANTS.colors.tertiary;
} else if(type === "secondary") {
color = CONSTANTS.colors.secondary;
} else if(type === "positive") {
color = CONSTANTS.colors.positive;
} else if(type === "negative") {
color = CONSTANTS.colors.negative;
} else if(type === "disabled") {
color = CONSTANTS.colors.disabled;
}
【问题讨论】:
-
JS没有模式匹配是什么意思?您似乎在这里混淆了一些东西。
标签: javascript pattern-matching