所以我遇到了一些旧代码,类似于:
const valStore = {
val1: "val1"
val2: "val2"
val3: "val3"
}
然后就这样称呼它:
switch (val) {
case "val4":
function()
break;
case "val5":
coolFunction()
break;
case valStore[val]:
otherFunction(val)
...
我不喜欢有一个完整的对象具有相同的键和值,这看起来很混乱,因为它在真实版本中只有 5 个值,尽管失败的 switch 语句看起来并没有好多少:
switch (val) {
case "val4":
function()
break;
case "val5":
coolFunction()
break;
case val1:
case val2:
case val3:
otherFunction(val)
...
我考虑过使用集合和 else if,我不确定是否需要替换或者我是否在浪费时间。这让我开始思考。
除了
switch
之外,您还可以将函数引用放入对象中并直接调用它们:
const valStore = {
val1: otherFunction,
val2: otherFunction,
val3: otherFunction,
val4: function() { /* your logic here */ },
val5: coolFunction
}
valStore[val]();
我还建议找到一种方法来删除
valX: otherFunction
重复,但如果不了解逻辑的上下文和结构,就很难提出可行的替代方案。
最好使用带有函数的字典
const val = "val1"; // set the value here, dynamically or hard coded
// store your functions into an easy to access dictionary.
const valStore = {
"val1": otherFunction1,
"val2": otherFunction2,
"val3": otherFunction3,
"val4": () => { /* your code here */ },
"val5": otherFunction5,
}
// call it like this, this also checks if the val belongs to a valid function
let output = valStore[val] ? valStore[val] : "No function ran";