是否有更好的方法/编码样式可以在不使用if语句的情况下在不同条件下执行不同的功能?

我已经使用JavaScript以以下方式进行编码:(例如,处于不同条件下的函数可能会使用来自API的不同提取方法)

if(answer == 'a'){
  foo()

if(answer == 'b'){
  bar()

if(answer == 'c'){
  bar_2()

if(answer == 'd'){
  foo_3()


我曾经考虑过使用eval(),但这是一个好方法吗?例如,创建一个对象包括作为条件的键和作为属性的函数名。

conditions:{
  a: 'foo',
  b: 'bar',
  c: 'foo_2',
  d: 'bar_2',
}


并像eval(this.conditions[a])一样运行

但是我也听说使用eval很难进行测试。

最佳答案

是的,您可以使用函数构建条件对象并调用它们:

function foo(){...}
function bar(){...}

var conditions : {
    'a': foo,
    'b': bar,
}

conditions[answer]()


注意:如果您不知道自己在做什么,请尽量不要使用eval,这会带来安全风险

关于javascript - 根据条件执行不同的功能,而无需if语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52329970/

10-11 22:21
查看更多