声明期间调用的查找映射函数

Lookup map functions being called during declaration

我正在尝试使用 map 对象实现一个 switch 语句替代方案,并且在我声明 map 时调用了应该根据条件调用的函数

这是我实现的简化代码

someMethodName(someParams, otherParams) {
  const verifyThis = callExternalApi(someParams);

  const customSwitch = {
    oneValue: this.doThis(otherParams),
    anotherValue: this.doThat(otherParams),
  };

  const possibleValues = ["oneValue", "anotherValue"];
  if (possibleValues.includes(verifyThis))
    return customSwitch[verifyThis];
  return this.defaultCase(otherParams);
}

我在要调用的方法中放了一个console.log,发现它们都被调用了,据说是在我声明customSwitch的时候,然后其中一个方法在通过if 子句。

我该如何解决这个问题以避免调用我的方法?

使用一个对象,其值为函数,调用时会调用其他函数:

const customSwitch = {
  oneValue: () => this.doThis(otherParams),
  anotherValue: () => this.doThat(otherParams),
};

返回时调用

return customSwitch[verifyThis]();