声明期间调用的查找映射函数
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]();
我正在尝试使用 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]();